Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Voxel structure programming implementation


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
11 replies to this topic

#1 PlatinumOz   Members   -  Reputation: 84

Like
-1Likes
Like

Posted 08 September 2012 - 05:06 AM

Hello, everybody!

The 3D scene consist of 20 objects based on polygonal model structure. I wanna convert polygonal objects to voxel data structure (i think it's array 3D map) . And voxel objects will be used for constructing distance field of all environment world.

Please, tell me, do you have any ideas about using c# structure class to store voxel data and be able for further using in code or any algorithms and methods?

Do you know any API or wrap that could realize this functionality?

Thanks.

Edited by PlatinumOz, 08 September 2012 - 05:29 AM.


Sponsor:

#2 PlatinumOz   Members   -  Reputation: 84

Like
-1Likes
Like

Posted 10 September 2012 - 09:57 AM

Come on, ladies and gentlemen !

#3 Auskennfuchs   Members   -  Reputation: 583

Like
0Likes
Like

Posted 10 September 2012 - 02:17 PM

Thinking about it brought me to one idea. You can use a zbuffer to voxelize your objects. With the size of this ZBuffer you can scale the density of your voxelgrid. Now render each object or the whole scene at origin from all six sides and stay at same distance from origin for each side with an orthogonal projectionmatrix. For every "side-rendering" you know x,y,z position for every pixel and can set visibility-flag for all voxels. If you also need color for a voxel use an additonal diffuse-buffer and save the color from same position.

#4 PlatinumOz   Members   -  Reputation: 84

Like
-1Likes
Like

Posted 11 September 2012 - 10:16 AM

No, man.

I don't need rendering voxelized object. I need structure of voxelizard object in program code, for exapmle, type - array of byte.

#5 oggs91   Members   -  Reputation: 281

Like
0Likes
Like

Posted 11 September 2012 - 04:45 PM

according to the detailed question .... my answer is: octree

#6 oggs91   Members   -  Reputation: 281

Like
0Likes
Like

Posted 11 September 2012 - 04:47 PM

Thinking about it brought me to one idea. You can use a zbuffer to voxelize your objects. With the size of this ZBuffer you can scale the density of your voxelgrid. Now render each object or the whole scene at origin from all six sides and stay at same distance from origin for each side with an orthogonal projectionmatrix. For every "side-rendering" you know x,y,z position for every pixel and can set visibility-flag for all voxels. If you also need color for a voxel use an additonal diffuse-buffer and save the color from same position.

interesting idea :) !

#7 carangil   Members   -  Reputation: 490

Like
0Likes
Like

Posted 12 September 2012 - 03:06 PM

Look up the Sparse Voxel Octree. It's probably the best way to squeeze voxel data down to a reasonable size.

What's your end goal of the project? What do you want to use the distance fields for?

#8 PlatinumOz   Members   -  Reputation: 84

Like
-1Likes
Like

Posted 13 September 2012 - 08:24 AM

Look up the Sparse Voxel Octree. It's probably the best way to squeeze voxel data down to a reasonable size.

What's your end goal of the project? What do you want to use the distance fields for?

DracoLacertae, thanks so. I'm planing to use distance field for definition distance between objects. It's very difficult to build distance field for Sparse Voxel Octree, 3D array is more better I think. If you have another mind about it, please, post me material reference.

Edited by PlatinumOz, 13 September 2012 - 08:36 AM.


#9 MrOMGWTF   Members   -  Reputation: 440

Like
0Likes
Like

Posted 13 September 2012 - 09:14 AM

Make sure your model has uv coordinates. Render your model to a texture. Set each vertex position to its vertex coordinates. Set each vertex color to its position. For each pixel, create a voxel at the position from pixel's color.

#10 PlatinumOz   Members   -  Reputation: 84

Like
-1Likes
Like

Posted 13 September 2012 - 09:46 AM

Make sure your model has uv coordinates. Render your model to a texture. Set each vertex position to its vertex coordinates. Set each vertex color to its position. For each pixel, create a voxel at the position from pixel's color.

man, I don't catch what you have in mind! Could you show me class structure?

#11 MrOMGWTF   Members   -  Reputation: 440

Like
0Likes
Like

Posted 13 September 2012 - 11:21 AM

First, render your model to a texture. Vertex shader:
// Authors : Sinje Thiedemann, Niklas Henrich, 
//           Thorsten Grosch, Stefan Mueller

varying vec3 P;

void main()
{	
   // Transform atlas texture coordinate into NDC
	gl_Position = vec4((gl_MultiTexCoord0.xy * 2.0) - vec2(1.0), 0.0, 1.0);

	// Pass world-space position to fragment shader
	P = (gl_ModelViewMatrix * gl_Vertex).xyz;
}

Frag shader:
varying vec3 P;

void main()
{
   // Store world-position in atlas texture
   gl_FragColor = vec4(P, 1.0);
}

Then, for each pixel, to something like this:
foreach pixel:
    addVoxelAtPosition(pixel.color);

Got it?

#12 PlatinumOz   Members   -  Reputation: 84

Like
-1Likes
Like

Posted 13 September 2012 - 11:26 AM

First, render your model to a texture. Vertex shader:

// Authors : Sinje Thiedemann, Niklas Henrich,
//		   Thorsten Grosch, Stefan Mueller

varying vec3 P;

void main()
{	
   // Transform atlas texture coordinate into NDC
	gl_Position = vec4((gl_MultiTexCoord0.xy * 2.0) - vec2(1.0), 0.0, 1.0);

	// Pass world-space position to fragment shader
	P = (gl_ModelViewMatrix * gl_Vertex).xyz;
}

Frag shader:
varying vec3 P;

void main()
{
   // Store world-position in atlas texture
   gl_FragColor = vec4(P, 1.0);
}

Then, for each pixel, to something like this:
foreach pixel:
	addVoxelAtPosition(pixel.color);

Got it?

Man, I got it, thanks. But how can I use voxel data in program code? Do you read my question?
I asked about "c# structure class to store voxel data and be able for further using in code". Capish?




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS