appel
JGO Wizard     Posts: 1440 Medals: 22
I always win!
|
 |
«
Reply #30 on:
2010-03-14 08:32:24 » |
|
I found it odd that in some videos the man suggests that his system can be used in mobile phones and other limited devices, and then in another video suggests that scenes can hold trillions and trillions of points. At some point the memory and disk space will become an issue, maybe not for desktop computers, but he seems to make a lot of really large claims without providing runnable demos, test computer statistics or anything like that. Also, personally I hate the way he says "unlimited point cloud data"  There is no such thing as "unlimited" in computers. If you have a world consisting of quadrillion trillion billion points, you need to store that data somewhere. You need to store the data of the world. Where???
|
|
|
|
DzzD
|
 |
«
Reply #31 on:
2010-03-14 08:43:05 » |
|
Also, personally I hate the way he says "unlimited point cloud data"  yes I really hate that too, Unnnnnnnnnnnnnnnnnlimmited ! There is no such thing as "unlimited" in computers.
If you have a world consisting of quadrillion trillion billion points, you need to store that data somewhere. You need to store the data of the world. Where???
rather than lack of animation/dynamic and such wich I am sure can be improved, memory size is the most important problem I could see for this technic to be usefull because even if you can remove "plain area" and save huge amout of bytes you will still store million of useless details where nobody will never look at.
|
|
|
|
DzzD
|
 |
«
Reply #32 on:
2010-03-14 09:05:45 » |
|
some more thinking about this technic... for a project I am working on, I have used a huge map image (more than 350 bilions of points) that are seamless streamed to an applet and can be moved/zoomed with constant speed => not depending on the final texture size (nearly Unnnnnnnnnnnlimited !  ), and.... finally It make me think that this technic is maybe not really that much complexe if you apply the same tips you would use for 2d grid (texture) to a 3d grid (octree) : for a texture you would recursivly create mipmap until you get a 1*1 texture : mine is 864000 * 432000 starting from this texture you got : 864000 * 432000 432000 * 216000 216000 * 108000 etc... until you get 2 * 1 then using a quadtree (wich is in a certain manner the equivalent of octree but for 2d) and the point of view of the user : you can easily determine what part of the picture is visible and wich mipmap you have to load this enable the user to navigate over a teorical infinite image (may even draw on it...) so making the same in 3d , exacly the same enable to navigate over an octree with a constant speed quadtree become octree 2d grid (texture) image become a 3d grid point and mipmap (wich merge 4 pixels to 1 pixels become mipmap3d that merge 8 point to 1 point) for a 3d grid of 256*256*256 mipmaped grid will be something like : 128*128*128 64*64*64 etc.. 1*1*1 finally displaying a 3D Unnnnnnlimited grid at constant speed is EXACLY the same as displaying a 2D Unnnnnlimited grid at constant speed, both are possible and not that hard
|
|
|
|
Games published by our own members! Go get 'em!
|
|
princec
« League of Dukes » JGO Kernel      Posts: 7800 Medals: 77
Eh? Who? What? ... Me?
|
 |
«
Reply #33 on:
2010-03-14 09:44:58 » |
|
Those who wonder how you can possibly store trillions of points in a scene - you're thinking polygons again. Were you to render it with polygons you would indeed need to render trillions of polygons. However this is clearly a very neat instancing solution. Imagine a scene with a million bricks in it, and each brick was made up of 10,000 points. You wouldn't be storing 10,000,000,000 points - you'd be storing 10,000 points and 1,000,000 bricks, and the crucial part is, the rendering complexity is identical to the same scene with just 50 bricks in it (or near as dammit identical). Using warping and blending and other techniques applied dynamically to each instance would be a mean feat indeed but that's how they'd get animation. They could animate tens of thousands of soldiers in an army in this way if they've figured out how to efficiently store and raycast into these mutated instances. And it'd all be in full detail, all the way to the back of the scene. Wowsers. Cas 
|
|
|
|
VeaR
Jr. Member   Posts: 58
|
 |
«
Reply #34 on:
2010-03-14 09:50:24 » |
|
There is no such thing as "unlimited" in computers.
It is meant as limitless level of detail. If you want, and have the amount of memory needed, you can subdivide the mesh into as tiny pieces as you want. And if the mesh is subdivided into an octree, i can imagine that it is possible to subdivide parts of the mesh with different sized pieces. The sparse voxel octree can be viewed as a specially encoded 3D texture, which removes the need for polygon geometry.
|
|
|
|
|
DzzD
|
 |
«
Reply #35 on:
2010-03-14 10:05:02 » |
|
also non-needed part (plain / underground) do not need to exist in the 3d data structure or part that dont need a lot of details can be not detailed, that's the strenght of this technic you are free to scult whatever you want / modify existing object by adding details or remove area, the structure will always adapt to fit it
this is definitly a promising technologie...
|
|
|
|
DzzD
|
 |
«
Reply #36 on:
2010-03-14 11:29:55 » |
|
|
|
|
|
Alric
Jr. Member   Posts: 74
|
 |
«
Reply #37 on:
2010-03-14 15:50:58 » |
|
It's fairly interesting, and I would like to see a more in depth, mature demo. Generally I don't find hype, sarcasm and lack of substance to be a great combination when it comes to new technology.
|
|
|
|
princec
« League of Dukes » JGO Kernel      Posts: 7800 Medals: 77
Eh? Who? What? ... Me?
|
 |
«
Reply #38 on:
2010-03-14 19:54:53 » |
|
The video is awfully cringeworthy isn't it. He sounds rather like the nerd from Inbetweeners  Cas 
|
|
|
|
Bonbon-Chan
Sr. Member   Posts: 412 Medals: 13
|
 |
«
Reply #39 on:
2010-03-15 05:49:32 » |
|
I'm trying to understand how all this works. A quick and dirty java version should be something like : The octree : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| public class Octree { protected OctreeCell root; public float sx; public float sy; public float sz; public float x; public float y; public float z;
public int depth;
public Octree() { root = new OctreeCell();
x = 0; y = 0; z = 0;
sx = 1024; sy = 1024; sz = 128;
depth = 9; }
public void set(float x,float y,float z,byte r,byte g,byte b) { root.set(depth,x,y,z,r,g,b); }
public void validate() { root.validate(depth); }
public OctreeCell getRoot() { return root; } } |
The octree cell : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| public class OctreeCell { protected OctreeCell childs[][][]; protected byte red,green,blue;
public OctreeCell() { childs = new OctreeCell[2][2][2]; }
public OctreeCell get(int iteration,float x,float y,float z) { if (iteration == 0) { return this; }
int ix = 0; if (x>=0.5) { ix =1; } int iy = 0; if (y>=0.5) { iy =1; } int iz = 0; if (z>=0.5) { iz =1; }
if (childs[ix][iy][iz] == null) { return null; }
return childs[ix][iy][iz].get(iteration-1, x*2-ix, y*2-iy, z*2-iz); }
public void set(int iteration,float x,float y,float z,byte r,byte g,byte b) { if (iteration == 0) { red = r; green = g; blue = b;
return; }
int ix = 0; if (x>=0.5) { ix =1; } int iy = 0; if (y>=0.5) { iy =1; } int iz = 0; if (z>=0.5) { iz =1; }
if (childs[ix][iy][iz] == null) { childs[ix][iy][iz] = new OctreeCell(); }
childs[ix][iy][iz].set(iteration-1, x*2-ix, y*2-iy, z*2-iz,r,g,b); }
public int getColor() { return (red&0xFF)+((green&0xFF)<<8)+((blue&0xFF)<<16); }
public void validate(int iteration) { if (iteration == 0) { return; }
int compt = 0; int tr = 0; int tb = 0; int tg = 0;
for(int i=0;i<2;i++) { for(int j=0;j<2;j++) { for(int k=0;k<2;k++) { OctreeCell c = childs[i][j][k];
if(c!=null) { c.validate(iteration-1);
compt++; tr += ((int)c.red)&0xFF; tg += ((int)c.green)&0xFF; tb += ((int)c.blue)&0xFF; } } } }
red = (byte)((tr/compt)&0xFF); green = (byte)((tg/compt)&0xFF); blue = (byte)((tb/compt)&0xFF); } } |
Ray casting : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| protected int casteRay(float cameraX,float cameraY,float cameraZ, float viewX,float viewY,float viewZ) { float dist = MIN_DIST;
while(dist<MAX_DIST) { float cx = cameraX+viewX*dist; float cy = cameraY+viewY*dist; float cz = cameraZ+viewZ*dist; int pixelSize = (int)(dist/SCREEN_DIST); if(pixelSize<1) { pixelSize = 1; } else if(pixelSize>16) { pixelSize = 16; }
cx -= octree.x; cy -= octree.y; cz -= octree.z;
if ((cx>=0)&&(cx<octree.sx)&& (cy>=0)&&(cy<octree.sy)&& (cz>=0)&&(cz<octree.sz)) { int ite = octree.depth-INV_POW2[pixelSize]; OctreeCell c = octree.getRoot().get(ite, cx/octree.sx, cy/octree.sy, cz/octree.sz);
if (c != null) { return c.getColor(); } }
dist += pixelSize*0.25f; }
return 0; } |
With the octree search and the stepping casting, I don't really like this thing. What I don't like too is that we simply replace a bunch of triangles by a bunch of voxels. When zooming, it will be the same problem. I would prefere to use a ray tracing base on nurbs with procedural/factal texture but it is not realistic... An artist will never deal with too mush abstract concepts. Thought I would prefere nurbs with displacement map (but calculations are not that simple)
|
|
|
|
|
Games published by our own members! Go get 'em!
|
|
princec
« League of Dukes » JGO Kernel      Posts: 7800 Medals: 77
Eh? Who? What? ... Me?
|
 |
«
Reply #40 on:
2010-03-15 05:55:45 » |
|
If each point in the point cloud defined a texture, bump map, gloss map, etc. and additionally a radius, you could in theory make some shapes out of relatively few points. To get actual flat surfaces it would probably be good to stick in a normal as well to slice a flat plane off of the sphere. Meh what do I know  It looks like they're doing something extra clever. Cas 
|
|
|
|
DzzD
|
 |
«
Reply #41 on:
2010-03-15 08:20:57 » |
|
@Bonbon-Chan :nice, What I don't like too is that we simply replace a bunch of triangles by a bunch of voxels. When zooming, it will be the same problem this is normal that at a certain level you cant get more detail (inded the only way would be to use mathematical equation to infinitly create more detail but that's out of this topic) anyway, I think that you should not dsiplay a plain square or circle to display a point but rather draw a true cube viewed by the correct view angle (or a precomputed shape equivalent to the cube viewed by the current correct view angle) : voxel nearly often use quad/big pixel wich is not rendering the best , IMO better to render the cube seen from the correct angle
|
|
|
|
Markus_Persson
JGO Kernel      Posts: 2092 Medals: 10
Mojang Specifications
|
 |
«
Reply #42 on:
2010-03-15 11:06:03 » |
|
* Low frame rate which varies a LOT with the complexity of the scene (this is especially damning) * No specular lighting, buggy shadows * Heavy reliance of geometry instancing * Perfectly flat "reflections" meaning it's almost certainly just duplicated geometry rather than any surface of portal based proper reflections * Low resolution * No flat surfaces * Zero dynamic terrain data. Nothing is added, moved or removed.
And their claim about this running on a Wii, making it "more powerful than a ps3" makes me want to cry.
This is a desperate fund raising attempt, there's nothing revolutionary here, and VOXLAP is already more impressive.
|
|
|
|
DzzD
|
 |
«
Reply #43 on:
2010-03-15 13:28:33 » |
|
No flat surfaces I noticed that too, got a little idea but was not sure why it could be a problem ?
|
|
|
|
Momoko_Fan
Full Member   Posts: 100 Medals: 3
|
 |
«
Reply #44 on:
2010-03-15 13:36:39 » |
|
Now that someone mentioned dynamic terrain.. Reminds me of Red faction guriella and bad company, where destroying the terrain was the main idea. With this tech it will be impossible to do this. Also for physics to work with it the point cloud will need to be converted to geometry, not sure how that will happen.
|
|
|
|
|
DzzD
|
 |
«
Reply #45 on:
2010-03-15 14:27:33 » |
|
With this tech it will be impossible to do this. Also for physics to work with it the point cloud will need to be converted to geometry, not sure how that will happen.
heu.. I wont agree IMO this will be the exact inverse ? why would you want to convert the point cloud to geometry to perform physic ? EDIT: I mean in an octree every point is a child of a branch you could define a branch as using a certain material and then break it in a certain manner : small part / big part that all inherit of their original branch material, an it would not look as weird as current destruction in current engine, where destructed part are usually precomputed
|
|
|
|
Momoko_Fan
Full Member   Posts: 100 Medals: 3
|
 |
«
Reply #46 on:
2010-03-15 14:46:06 » |
|
If you played Red Faction for example, you would know that's not what I mean  In that game, you can destroy buildings and objects and such, when you destroy them, you'll see them break down realistically. E.g think about what would happen when you shoot a bazooka on a house for example, would you see a plain hole appear in the house, or would the wall's bricks would fly out, the roof would slide down, various objects inside it would fly etc etc. In other words, once the terrain is destroyed, it is effected realistically with physics. Watch this video: http://www.youtube.com/watch?v=2ofYAlaikYAI think that you mean terrain destruction being like in Worms game, where shooting the ground would make a hole in it basically, but that's not entirely realistic.
|
|
|
|
|
DzzD
|
 |
«
Reply #47 on:
2010-03-15 14:52:46 » |
|
I think that you mean terrain destruction being like in Worms game, where shooting the ground would make a hole in it basically, but that's not entirely realistic.
not only, at first yes, this is perfect for worms like destruction, but it also enable better destruction of arbitrary shape using some kind of breakable properties to an object, like a particle system that could transmit break energy to all its neigboord, and depending on material propeties it will give small part (like for ground) or big/straight cut for wood and such. also new created particle may get the correct color /material without the need for the designer to prepare a texture of the inside of the material. you can also merge different material like a house with a door made of wood : the door will break like wood and the brick like brick, realisticly even for differents bomb explosion location EDIT: not really related but you should have shown me this one http://www.youtube.com/watch?v=sh1OqUysW3E cryengine have really take some advance in 3d world, with a full wysiwig editor... cannot imagine the project size...
|
|
|
|
rdcarvallo
Sr. Member   Posts: 300
2D Java games forever!
|
 |
«
Reply #48 on:
2010-03-15 15:30:56 » |
|
you can also merge different material like a house with a door made of wood : the door will break like wood and the brick like brick, realisticly even for differents bomb explosion location
I remember that "The Force Unleashed" uses Digital Molecular Matter to simulate those effects.
|
|
|
|
|
|
|
Markus_Persson
JGO Kernel      Posts: 2092 Medals: 10
Mojang Specifications
|
 |
«
Reply #50 on:
2010-03-15 15:40:00 » |
|
|
|
|
|
DzzD
|
 |
«
Reply #51 on:
2010-03-15 15:43:55 » |
|
haha very nice, they should render twice the size to perform a little antialiasing and that would be perfect  , cool video EDIT: just tried it, it is available on sourceforge, getting out of jail is painfull but it is interresting to test it, interresting also that in the download there is an animation tools, to animate the game voxel object
|
|
|
|
Eli Delventhal
« League of Dukes » JGO Kernel      Posts: 3478 Medals: 39
Game Engineer
|
 |
«
Reply #52 on:
2010-03-15 16:22:07 » |
|
Huh, that's voxels? Looks ugly. :-P
|
See my work:OTC Software<br /> Currently Working On:Secret project... I edit JGO in production, because I simply don't waste time writing bugs
|
|
|
kappa
« League of Dukes » JGO Kernel      Posts: 2268 Medals: 50
★★★★★
|
 |
«
Reply #53 on:
2010-03-15 16:23:19 » |
|
hey that reminds me of minecraft  (the beginning at least)
|
|
|
|
|
EgonOlsen
JGO Strike Force    Posts: 810 Medals: 6
|
 |
«
Reply #54 on:
2010-03-15 16:32:08 » |
|
This video isn't allowed to be played in germany, because it "contains content from Sony Music Entertainment"...WTF? 
|
|
|
|
DzzD
|
 |
«
Reply #55 on:
2010-03-15 16:40:20 » |
|
damn your crazy, I love its retro looking !
anyways that's a good starting point showing animation and destruction are possible, time to defend it , as it render well on very low configuration you could imagine render it 8 times its size and get a perfect antialiased version,also comparing this to minecraft is not the best idea as it is completly different rendring process... there are much more cube and all render smoothly with a very low configuration, so I can imagine that probably this technic could have also be used to make minecraft, it would just requiere to render real cube rather than square for 3d point, no ?
|
|
|
|
VeaR
Jr. Member   Posts: 58
|
 |
«
Reply #56 on:
2010-03-15 19:06:44 » |
|
Once Wolfenstein was that ugly using polygons and sprites. Then 3D rendering got nicer later on. Right now we have it ugly using voxels, its just a time until it is improved. Animation using octrees may not be that hard. A branch in the tree could be combined with a transform (translation/rotation) like in a scene-graph, and parts of the tree replaced for animation.
|
|
|
|
|
Alan_W
JGO Ninja    Posts: 732 Medals: 8
Java tames rock!
|
 |
«
Reply #57 on:
2010-03-16 02:15:42 » |
|
For polygon based geometry, you can render a closed space environment without overdraw using a BSP tree, which only works with static geometry. The 2-D BSP Tree can't handle sloping walls, floors and ceilings, but a 3D BSP tree can.
Now I wonder what would happen if you shrunk the mesh size down to a single voxel. Each voxel has a vector normal associated with it and a finite size. Only voxels on the surface are retained in the database. Could this be worked into a variant of a 3D BSP Tree to give a database which would give you the draw-order of voxels from any position in the landscape. We would need to count the number of pixels drawn so to know when to stop rendering.
However, I don't think it does anything for anti-aliasing. I also can't see how this would work for open environments (I mean with some sky showing), as some pixels would never get filled, so the entire database would get searched every frame. Maybe it has multi-resolution voxels and multi-resolution raytrace cone sizes. That would help eliminate area of sky at lower cost. Maybe help with anti-aliasing too. My head hurts.
|
Time flies like a bird. Fruit flies like a banana.
|
|
|
xinaesthetic
Full Member   Posts: 204 Medals: 1
|
 |
«
Reply #58 on:
2010-03-17 09:04:20 » |
|
It's fairly interesting, and I would like to see a more in depth, mature demo. Generally I don't find hype, sarcasm and lack of substance to be a great combination when it comes to new technology.
Don't forget the arrogant assumption that if anyone doesn't view you as the new messiah of graphics, it's obviously because of politics or because they just have a vested interest in pushing ever more polygons (never mind that there is much more to conventional graphics techniques than that).
|
|
|
|
|
Abuse
JGO Kernel      Posts: 1859 Medals: 5
falling into the abyss of reality
|
 |
«
Reply #59 on:
2010-03-17 09:20:54 » |
|
So, where's the tech. demo that I can run on my pc *right now*  At this stage it just sounds like another start-up trying to get rich quick, not unlike Ageia.
|
|
|
|
|
|