Java – Best approach to selecting programming languages and 3D graphics API for simulating physics experiments

3dcjavaopenglsimulation

I am starting a research project and need to nail down a programming language and 3D graphics API where I will be creating an environment in the field of molecular cell biology where I will be simulating a large range of experiments in silico. This will be an ongoing project which will keep expanding and growing in size. The experiments will be done in discrete time and will encompass a complex physics engine. Pretty graphics are not of importance nor is is audio. I run Ubuntu and this is the environment I will be developing in.

The pairs I have investigated thus far are:

java : flexible,scalable,lib/dependency organization (maven),oo

  • jogl: full control of graphics
  • jMonkeyEngine: full game library, includes jBullet, maybe a bit overkill for what I need.

c++ : High speed, low level, oo

  • opengl:full control of graphics
  • maya:built in physics engine, infrastructure already in place, proprietary, not free

matlab : Heavily math based, but difficult to maintain and scale

  • simulink : proprietary, not free

I am least familiar with Maya but it was suggested to me by a friend as a good approach. When would Maya be a good solution and would it be a good selection for this type of case? Just as thinking jMonkey would be overkill this is kinda my feeling on Maya.

Are there any other pairings I should investigate?

Also has anyone had any experience modifying an existing physics library and the flexibility or complexity of doing so (ie Bullet, JBullet, jinngine)? Unsure at this point if I should start from scratch or try and modify/expand an existing one.

Any thoughts, feedback, input or any other suggestions would be greatly appreciated.

Thanks

Best Answer

First, what you are doing sounds as though it matches up VERY closely with Chandrajit Bajaj's (bajaj@cs.utexas.edu) research work in computational biology and molecular visualization. Bounce an email off of him and see what suggestions he has. (I suspect he will say C++ and OpenGL.) (Full Disclosure: During a period of refresher work while between jobs, I took the undergrad computer graphics class from him. I learned quite a bit and had a great time.)

Also, Jim Browne (browne@cs.utexas.edu) did his very early work in computational physics, and might have some valuable insights. I think Jim is retired now, and he may not answer the email. (Full Disclosure: I took a graduate operating systems class from him, and learned a LOT. He is, PERSONALLY, the reason UT Austin first built their Computer Science department. It was establish the department or lose him to Queen's University of Belfast.)

Second, whenever some describes something as "expensive", you should ALWAYS ask "Compared to what?" MATLAB is dirt-cheap compared to what it would cost you to develop and debug all their code from scratch.

Third, if interactivity is not a big deal, it is not that hard to rig a C++ program to write a file that can then be fed to MATLAB for intense number-crunching. During the aforementioned refresher work, I repeated the undergrad introductory numerical methods class. We crunched numbers in C++ and plotted results with MATLAB. (I had a LOT of fun in that class!) That was with Todd Arbogast (arbogast@ma.utexas.edu, I think). He is SHARP, and he might have some suggestions as well.

Related Topic