Java-Gaming.org    
Featured games (81)
games approved by the League of Dukes
Games in Showcase (482)
Games in Android Showcase (110)
games submitted by our members
Games in WIP (548)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: 1 [2] 3
  ignore  |  Print  
  Unlimited Gfx Detail  (Read 8674 times)
0 Members and 1 Guest are viewing this topic.
Offline appel

JGO Wizard


Medals: 50
Projects: 4


I always win!


« Reply #30 - Posted 2010-03-14 12: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"  persecutioncomplex

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???

Check out the 4K competition @ www.java4k.com
Check out GAMADU (my own site) @ http://gamadu.com/
Offline DzzD
« Reply #31 - Posted 2010-03-14 12:43:05 »

Also, personally I hate the way he says "unlimited point cloud data"  persecutioncomplex
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.

Offline DzzD
« Reply #32 - Posted 2010-03-14 13: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 ! Tongue),

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! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline princec

JGO Kernel


Medals: 362
Projects: 3
Exp: 16 years


Eh? Who? What? ... Me?


« Reply #33 - Posted 2010-03-14 13: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 Smiley

Offline VeaR

Junior Member





« Reply #34 - Posted 2010-03-14 13: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.
Offline DzzD
« Reply #35 - Posted 2010-03-14 14: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...


Offline DzzD
« Reply #36 - Posted 2010-03-14 15:29:55 »

some other nice related video :

GigaBroccoli : http://www.youtube.com/watch?v=PFr-cEEb8y0&feature=related
3D coat : http://www.youtube.com/watch?v=tx9LRvNATRg&feature=related

Offline Alric

Junior Member


Projects: 1



« Reply #37 - Posted 2010-03-14 19: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.

Offline princec

JGO Kernel


Medals: 362
Projects: 3
Exp: 16 years


Eh? Who? What? ... Me?


« Reply #38 - Posted 2010-03-14 23:54:53 »

The video is awfully cringeworthy isn't it. He sounds rather like the nerd from Inbetweeners Smiley

Cas Smiley

Offline Bonbon-Chan

JGO Coder


Medals: 12



« Reply #39 - Posted 2010-03-15 09: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! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline princec

JGO Kernel


Medals: 362
Projects: 3
Exp: 16 years


Eh? Who? What? ... Me?


« Reply #40 - Posted 2010-03-15 09: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 Smiley It looks like they're doing something extra clever.

Cas Smiley

Offline DzzD
« Reply #41 - Posted 2010-03-15 12:20:57 »

@Bonbon-Chan :nice,

Quote
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

Offline Markus_Persson

JGO Wizard


Medals: 14
Projects: 19


Mojang Specifications


« Reply #42 - Posted 2010-03-15 15: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.

Play Minecraft!
Offline DzzD
« Reply #43 - Posted 2010-03-15 17:28:33 »

Quote
No flat surfaces
I noticed that too, got a little idea but was not sure why it could be a problem ?

Offline Momoko_Fan

Junior Member


Medals: 2



« Reply #44 - Posted 2010-03-15 17: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.
Offline DzzD
« Reply #45 - Posted 2010-03-15 18: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

Offline Momoko_Fan

Junior Member


Medals: 2



« Reply #46 - Posted 2010-03-15 18:46:06 »

If you played Red Faction for example, you would know that's not what I mean Tongue 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=2ofYAlaikYA

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.
Offline DzzD
« Reply #47 - Posted 2010-03-15 18: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 Smiley 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...

Offline rdcarvallo

Senior Member


Projects: 5
Exp: 15 years


2D Java games forever!


« Reply #48 - Posted 2010-03-15 19: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.
Offline DzzD
« Reply #49 - Posted 2010-03-15 19:33:07 »

I remember that "The Force Unleashed" uses Digital Molecular Matter to simulate those effects.

thnks very interresting, NB: here is the homepage


EDIT: double thnks here is a better explanation that I could never made...

http://www.pixelux.ch/content/view/31/45/

Offline Markus_Persson

JGO Wizard


Medals: 14
Projects: 19


Mojang Specifications


« Reply #50 - Posted 2010-03-15 19:40:00 »

http://www.youtube.com/watch?v=uCtgtF52nAQ

Play Minecraft!
Offline DzzD
« Reply #51 - Posted 2010-03-15 19:43:55 »

haha very nice, they should render twice the size to perform a little antialiasing and that would be perfect Smiley, 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

Offline Eli Delventhal

JGO Kernel


Medals: 42
Projects: 11
Exp: 10 years


Game Engineer


« Reply #52 - Posted 2010-03-15 20:22:07 »

Huh, that's voxels? Looks ugly. :-P

See my work:
OTC Software
Offline kappa
« League of Dukes »

JGO Kernel


Medals: 76
Projects: 15


★★★★★


« Reply #53 - Posted 2010-03-15 20:23:19 »


hey that reminds me of minecraft Smiley (the beginning at least)
Offline EgonOlsen
« Reply #54 - Posted 2010-03-15 20:32:08 »

This video isn't allowed to be played in germany, because it "contains content from Sony Music Entertainment"...WTF?  Huh

Offline DzzD
« Reply #55 - Posted 2010-03-15 20: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 ?

Offline VeaR

Junior Member





« Reply #56 - Posted 2010-03-15 23: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.
Offline Alan_W

JGO Knight


Medals: 8
Projects: 3


Java tames rock!


« Reply #57 - Posted 2010-03-16 06: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.
Offline xinaesthetic

Senior Member


Medals: 1



« Reply #58 - Posted 2010-03-17 13: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).
Offline Abuse

JGO Knight


Medals: 12


falling into the abyss of reality


« Reply #59 - Posted 2010-03-17 13:20:54 »

So, where's the tech. demo that I can run on my pc *right now*  persecutioncomplex

At this stage it just sounds like another start-up trying to get rich quick, not unlike Ageia.

Make Elite IV:Dangerous happen! Pledge your backing at KICKSTARTER here! https://dl.dropbox.com/u/54785909/EliteIVsmaller.png
Pages: 1 [2] 3
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

CopyableCougar4 (5 views)
2014-08-22 19:31:30

atombrot (28 views)
2014-08-19 09:29:53

Tekkerue (25 views)
2014-08-16 06:45:27

Tekkerue (23 views)
2014-08-16 06:22:17

Tekkerue (15 views)
2014-08-16 06:20:21

Tekkerue (22 views)
2014-08-16 06:12:11

Rayexar (61 views)
2014-08-11 02:49:23

BurntPizza (39 views)
2014-08-09 21:09:32

BurntPizza (31 views)
2014-08-08 02:01:56

Norakomi (37 views)
2014-08-06 19:49:38
List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06

List of Learning Resources
by SilverTiger
2014-07-31 11:54:12

HotSpot Options
by dleskov
2014-07-08 01:59:08
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!