# We should be able to draw with Geometry only --- without object3d

does three.js really need objext3d?

first, there are vertices (Vector3) and then faces(Face3) comes in. Face3 alrady consist normal, color, materialndex but not material. all we need a FAce3 includes material. Thus we can draw a scene combining Face3’s without any requirement to Object3d class

What would you use to store the scene graph?

1 Like

Besides what pailhead said, a geometry isn’t Vector3’s and Face3’s, THREE.Geometry is just an easy to deal with class to construct some things, but not recommended for serious usage as it requires tons of objects that will be converted into buffers anyway.

It seems you miss some basic understanding on how the renderer works? You should describe what you want to archive.

I actually use a octree graph for hierarchical culling, in regular scenes a massive number of objects turn into a serious bottleneck, as all are touched at least for a frustum check by default. But i needed to changed the renderer for that.

1 Like

There are probably many valid uses for not having (three’s) scene graph. I’m thinking something like shadertoy - is which is “3d” in a sense, but has no scene graph.

Thus we can draw a scene combining…

This is probably the problem with the statement. You can rasterize triangles, points and lines for sure, but you will still have to do something to make “a scene”

Sounds interesting. Got an example of that (fiddle or pen)?

@cyth319

The reason why Object3D’s are useful is because you can make a tree of Object3Ds so that you can transform things relative to their parents. Not all object need to be drawn, but the hierarchy can still be useful.

For example, here’s a simple example that shows if I animate the rotation of only the root node (an Object3D), then it will also rotate all of the Spheres which are children of the root Object3D.

That’s what Object3D is useful for.

In a way (mainly conceptually, I admit), I think you are misunderstanding Object3D. Object3D is a collection of methods and properties that all other objects that are intended to have a position in a scene graph inherit from.

So all objects that have a position in space will have properties like .matrix, .position, .quaternion and methods add() and remove() and so on, and they inherit these from Object3D. These methods allow them to be manipulated in space and to have a parent and children relationships to other objects (amongst other things).

Not all object need to be drawn, but the hierarchy can still be useful.

There are two special objects that are used to build this hierarchy without being drawn, Scene and Group. Scene is used as the top level “invisible” object in the scene graph, and Group is used at any subsequent levels.

I’m not sure that there is any case where you should be using an Object3D directly.
(Although it should be noted that introduction of Group is fairly recent and until then Object3D was double-jobbing).

2 Likes

It requires modifications in the renderer. I rarely use fiddle or codepen

you’re going to have to work it out your way, for your project. There is a ‘better’ way, but it involves very abstract programming, grouping, doing the process your way. Three is a great way to go, but you have to be a bit brilliant to get it to work for you in your specific instance. One thing I’m about to add is layers. So I can control the count. When I call render, I lose control, for a moment. I have .0016s to process, that’s my goal.

Is your modified renderer compatible as a drop-in replacement for the WebGLRenderer?

I would very much like to give this a try in a game I’m building to measure the difference in performance. My typical scene consists of quite a lot of meshes that make up a level (approx. 5000 cubes sharing roughly 50 different material instances). Alongside of this is foliage rendered with instanced buffer geometries (approx 50k planes per level minimum).

1 Like

Dang! Got source somewhere?

No, it actually also relies on the game engine i made on top of THREE, it’s not open source.

Darn. Hyped us all up!