Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

People have been trying to solve this problem since the VRML days in the '90s. I suspect you are underestimating the complexity of 3D data by a pretty huge extent.

3D is much, much, much more complicated than 2D, especially if you're trying to interchange between arbitrary applications that may have divergent needs.

Start with this little thought experiment.

What do you mean by 3d object?

Do you mean a set of polygons, like in a traditional triangle mesh? A volume, like voxels? A set of 3d surfaces?

Do you need to model interior details, or only the exterior envelope? Do you need to be able to split or explode it at some arbitrary level of detail? Do we need to encode sharp edges or creases in some way?

etc, etc, etc

This is before you have touched materials, texturing, lighting, any of that.



The basic math is also dramatically worse, and much more challenging for entry level participants to grasp. The basic idea of matrix math grows dramatically more complex just in terms of sheer number operations. You might be able to get away with your entire app only needing a couple mults or adds for most interaction in 2D. Basic 3D, closer to 150 mults (usually 3 [4x4] mults at 49 mults per [4x4] pair) for the default.

In 2D apps and games, you can often get away with incredibly simplistic calculations. Rarely much other than a translation. Many times 1D with naively obvious solutions. With 3D, you rapidly need to move to 4D matrices than can handle arbitrary scale, translate, rotate, perspective, clip volumes.

Nearly every 3D app anywhere has to handle the model, to world, to camera, to clip space path, which involves a lot of complex math well beyond most 2D apps. Usually, 3 different matrix mults with 4x4 matrices.

  v_world     = M⋅v_model
  v_camera  = V⋅M⋅v_model 
  v_clip    = P⋅V⋅M⋅v_model  

  v_clip   = [[P00,...,P30],[...],[...],[P30,...,P33]] ⋅ [V00...V33] ⋅
             [M00...M33] ⋅ [m00...m33]
It's one of the main reasons voxels have been the only real 3D implementation with large scale use. The amount of work necessary to develop, ... really anything that works with 3D is a large step upward in difficulty unless its totally regular and square. Otherwise, huge numbers of optimizations are no longer available. Plus, the compression cliff for normal users of effectively arbitrary 3D shape design and movement is really steep. Most first time users of an industry 3D CAD package (ProE, Solidworks, AutoCAD, Maya, 3DSMax, Blender, ect...) or similar have the "wall of difficulty" moment.

Edited: dumb math error


Stupid question… isn’t all that wrapped in a container?

Like in HTML with divs? So if you have a virtual lamp you want to copy, all the various elements that make up the lamp are in a VR equivalent object markup as <div id=‘lamp’ />. If you want to copy specific elements you can, but you’d have specific actions, e.g copy color etc.

Maybe I’m missing something though and it’s more complex.


Don’t think about tag soup. Think about how you’d encode the geometry, and what that even means for anything but the most trivial object, like a cube.


Ok now, I have a few separate colored lights pointing at the lamp. What color is the lamp? How about when it’s on?


Interesting. I assume you’d copy the object not the lighting. If you move a real object into a different room or outside you don’t expect the colour to stay the same. But if I’m pasting it into a word doc, I guess intuitively I might want it to look the same as source, but that breaks down unless I copy the whole virtual universe. A mirrored globe inside a room of mirrors is not going to look the same unless I copy the scene. People will learn this and maybe demand eg a choice of the copy scope. You might not even have rights to copy all objects. I can’t just copy your palace and paste it into mine unless you allow it (say).


That’s the entire crux. What exactly the hell is “the object”, and how does your target program DO anything to it, to include manipulating it, or getting it out to a GPU for rendering in some even vaguely terrible way - and you’re probably trying to render it 120 times (or more) a second with a decent level of resolution.

3D is not like tabular data. There isn’t some default resting state it naturally wants to exist in. It’s all edge cases and special logic. Also, it’s mind bogglingly vast amounts of raw data. Even a simple scene can contains hundreds of thousands of surfaces/polygons/spline patches/voxels/whatever representation.

A VR environment is essentially running a high end 3d game engine at all times.


Isn't this already a solved problem? See 3D apps, i.e. Blender, Unity, Unreal etc. You can copy objects easily.

I don't think the intention is to copy an object with the baked in lighting at the time of making a copy. I can imagine you just want to copy the object and the behavior how it reacts to whatever environment it's placed in.


Not between them.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: