|
I am trying to do some volume rendering using OpenGL and Java. here are some preliminary results (there are 6 million triangles in each): The frame rate is not that great. I use display lists right now. The volume data itself doesn't change. If anyone can suggest a better method, please do.
|
# ¿ Jun 29, 2008 00:32 |
|
|
# ¿ May 4, 2024 21:59 |
|
SuperFurryAnimal posted:I've been developing techniques for the realtime procedural animation of assorted creatures for my Ph.D. The idea is that all animation is driven by the creature's embodiment in the environment, taking a lot of inspiration from AI, robotics and ethology. This is really cool. Any chance of you publishing your thesis here after you are done?
|
# ¿ Jun 29, 2008 00:34 |
|
Adhemar posted:It's volume rendering but you're rendering millions of triangles? Do explain. cheap trick, since i didn't want to do ray casting algorithms or volume finding ones. I just draw cubes that connect each data point with its neighbors, and then use GL_SMOOTH to interpolate between vertices on same triangle. What i do exactly, is draw a triangle fan for each point that covers 3 faces of a cube. It actually worked out pretty well for rendering actual data i was given by my boss so far. What i am working on next is making a function that takes data point and produces new alpha point in vertex shader. So far I have implemented a simple linear one and Gaussian distribution one. quote:Vertex Buffer Objects (VBO's) are what you want. WAY better than display lists. I thought about that, but i fail to see how it would be faster than display list? Both are on video card and as far as i understand VBOs are like vertex arrays but they reside on actual video memory instead of normal RAM. I don't really need to change any visual information on a fly. Would they really be faster for rendering static stuff, than display lists?
|
# ¿ Jun 29, 2008 20:19 |
|
Thug Bonnet posted:Yeah, depending on the card they can be significantly faster. I'm not sure what you're writing in but I have a bunch of VBO C code I can give you if you're interested. I do not understand. Display list is compiled list of commands, VBOs on the other hand still have to be rendered using some primitive? How could it be faster? I am using Java, but it is pretty close to the way OpenGL is used in C, so your example code could be very useful for me.
|
# ¿ Jun 29, 2008 22:25 |
|
Screeb posted:Read this: http://www.spec.org/gwpg/gpc.static/vbo_whitepaper.html It is much higher, but the visual quality is much suckier, because there are a lot of empty spaces between points that don't get filled. Thanks for the link! quote:My understanding is that volume ray casting is considered to be the way to go these days. Still, even if you decided to do it the "easy" way, why not just use view oriented quads that slice through the volume rather than millions of triangles? You mean i can sort of calculate the "voxels" i need to display to approximate "real" view then render it using quads? I have seen some real time ray-casting demos and the performance didn't seem that much higher than what I have right now. Also ray-casting is usually for rendering solids and semi-transperent layers that cover them, as far as I understand. With this project its more that I need to look "inside" the volume at all levels and be able to isolate different features inside. The linear and gaussian function in vertex shader has worked fine to that end so far. I believe I can use VBO or at least vertex arrays to cut on the amount of data I am sending to the video card because right now it is 6 times bigger than it needs to be. Perhaps the frame rate will improve as well when I do not repeat glVeretx needlessly. Entheogen fucked around with this message at 13:25 on Jun 30, 2008 |
# ¿ Jun 30, 2008 13:13 |
|
http://giga2.cs.ohiou.edu/~neiman/anim1.gif Same program as I posted the SN's of above, but this time I am walking through the data set using gaussian distribution function done in vertex shader.
|
# ¿ Jul 1, 2008 02:12 |
|
Thug Bonnet posted:I'm pretty sure the display lists are stored outside the GPU's memory whereas VBOs/PBOs are stored in GPU memory. Another nice thing about VBOs/PBOs is that you can read from and re-write to them whenever you'd like (incurring while a performance hit of course). i dont have platinum. you can email me though. green.entheogen@gmail.com thanks in advance.
|
# ¿ Jul 1, 2008 05:03 |
|
I followed your guy's advise and used VBO's. While I do not notice any rendering speed improvement, it did allow me to render more than with display lists, because i kept getting GL_OUT_OF_MEMORY exception with display lists when trying to render same amount of information with display list. Here is a picture of some data set with linear vertex shader function: and here is same data, same camera angle but with gaussian function: It was surprisingly easy to get VBO's to work with Java OpenGL. I just made a version with vertex arrays first, made sure it worked and then made a couple of extra gl calls to put arrays into GPU memory.
|
# ¿ Jul 4, 2008 22:40 |
|
Here is an animation of a walk through some actual data my boss gave me: http://giga2.cs.ohiou.edu/~neiman/wave.swf It is sort of low-res, but I will make a much nicer one soon. EDIT: here it is: http://giga2.cs.ohiou.edu/~neiman/hi-def_wave.gif He said it is solution to some partial differentiation equation that describes release of calcium or sodium in the cell. I am not quite sure what it actually is. The data is visualized correctly. To generate the other screenshots, i just took an empty volume, filled it with random sized and random colored spheres, then did a few passes of averaging algorithm, that just takes each point and averages it together with neighbor. Then all of that is compiled into a VBO and what is rendered subsequently. This is the source for gaussian filter implemented in vertex shader code:
Entheogen fucked around with this message at 02:12 on Jul 5, 2008 |
# ¿ Jul 5, 2008 00:57 |
|
Nomikos posted:Ooh, walking spiders. I made a halfassed attempt at making exactly what you're working on, during senior year in high school. Except instead of actually thinking about ethology and balance and important things like that, I made an enormous blob of a neural network and hoped that reinforcement learning would solve all my problems . me too. is your dissertation publicly available?
|
# ¿ Jul 11, 2008 03:06 |
|
monsterland posted:cool poo poo hey that's pretty cool man. how long did it take you to assemble all the sprites and put them in game like that?
|
# ¿ Jul 14, 2008 05:27 |
|
I implemented marching cubes algorithm to generate iso surfaces for the data I am visualizing. Here is one screen shot and there is more here: http://giga2.cs.ohiou.edu/~neiman/sn/iso_surface/iso_surface.htm Entheogen fucked around with this message at 02:41 on Aug 11, 2008 |
# ¿ Aug 11, 2008 02:35 |
|
|
# ¿ May 4, 2024 21:59 |
|
Dr. Stupid posted:Are you visualizing Autechre tracks? What is that? I am visualizing the data that my boss has given me, which is a solution to some wave equation describing how cell releases some chemical from one of it's organelles, or something of this nature. It is same stuff that I have posted pics of on previous pages.
|
# ¿ Aug 11, 2008 21:31 |