开发者

Voxels... Honestly, I need to know where to begin

Okay, i understand that voxels are just basically a volumetric version of a pixel.

After that, I have no idea what to even look for.

Googling doesn't show any tutorials, I can't find a book on it anywhere, I can't find anything even having to do w开发者_开发百科ith the basic idea of what a voxel really is.

I know much of the C++ library, and have the basics of OpenGL down.

Can someone point me in the right direction?

EDIT: I guess I'm just confused on how to implement them? Sorry for being a pain, it's just that I can't really find anything that I can easily correlate to... I think I was imagining a voxel being relevant to a vector in which you can actually store data.

a voxel can be represented as ANY 3D shape? For example, say I wanted the shape to be a cylinder. Is this possible, or do they have to link like cubes?


Minecraft is a good example of using voxels. In Minecraft each voxel is a cube.

To see a C++ example you can look at the Minecraft clone Minetest-c55. This is open source so you can read all of the source code to see how its done.

Being cubes is not a requirement of voxels. They could be pyramids or any other shape that can fit together.


I suspect that you are looking for information on Volume Rendering techniques (since you mention voxels and OpenGL). You can find plenty of simple rendering code in C++, and more advanced OpenGL shaders as well with a little searching on that term.


In the simplest possible implementation, a voxel space is just a 3 dimensional Array. For solids you could use a single bit per voxel: 1 == filled and 0 == empty. You use implicit formulas to make shapes, e.g. A sphere is all the voxels within a radius from the center voxel.

Voxels are not really compatible with polygon-based 3d rendering, but they are widely used in image analysis, medical imaging, computer vision...


Let's Make a Voxel Engine on Google Sites might help one to get started creating a voxel based engine:

https://sites.google.com/site/letsmakeavoxelengine/

In addition to that there are presentations of the results on Youtube worth checking:

http://www.youtube.com/watch?v=nH_bHqury9Q&list=PL3899B2CEE4CD4687


Typically a voxel is a position in some 3D space that has a volume (analogous to the area that a pixel contains.

Just like in an image, where a pixel contains some scalar value (grayscale) or vector of values (like in a color image where the vector is either the red, green, and blue components, or hue, saturation, and value components) the entries for a voxel can have some scale or vector of values.

A couple natural examples of volumetric images that contains voxels are 3D medical imagines such as CT, MRI, 3D ultrasound etc.

Mathematically speaking a 3D image is a function from some voxel space to some set of numbers.


look for voxlap or try this http://www.html5code.com/gallery/voxel-rain/ or write your own code. Yes, a voxel can be reduced to a 3d coordinate (which can be implied by it's position in the file structure) and a graphical representation which can be anything (cube, sphere, picture, color ...). Just like a pixel is a 2D coordinate with a color index.

You only need to parse your file and render the corresponding voxels. Sadly, there is no 'right' file format although voxlaps file formats seem pretty neat.

good luck

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜