How to find the vertices of a 3D shape?

This topic has been viewed 19291 times and has 13 replies
Thread status: Active
Questions about extending features and developing plug-ins [img]http://www.sweethome3d.com/images/flags/en_small.gif[/img]
enkonyito
Posts: 607
Joined: Thu May 28, 2015 4:52 pm

How to find the vertices of a 3D shape?

Post by enkonyito »

Hi,

I want to automatically find the vertices (coordinates and indices) of a 3D shape.

I am currently studying methods related to [font=courier new]exportNode[/font] of PhotoRenderer.java or [font=courier new]writeNode[/font] of OBJWriter.java.
Is it a good starting point even if it is not easy to know what to keep or not?

The goal is to be able to use this information for TriangleMeshLight light sources.

Enko
EnkoNyito
enkonyito
Posts: 607
Joined: Thu May 28, 2015 4:52 pm

Re: How to find the vertices of a 3D shape?

Post by enkonyito »

For SH3D lights, the types of geometric constructions detected are:
- TriangleArray (like the opaque light panel)
- LineStripArray (like the unviewable light panel).

Using,

Code: Select all

GeometryInfo geometryInfo = new GeometryInfo (geometryArray);
with the type LineStripArray, I have the error message:

Code: Select all

java.lang.IllegalArgumentException: Unsupported geometry type
Sunflow only considers triangle-based meshes for TriangleMeshLight light sources.

Code: Select all

light {
    type meshlight
    name meshLamp
    emit { "sRGB nonlinear" 1.000 1.000 1.000 }
    radiance 100.0
    samples 16
    points 4
        0.6 0.1 6.0
        0.3 1.0 6.0
        1.0 1.0 5.5
        1.0 0.3 5.5
    triangles 2
        0 1 2
        0 2 3
}
EnkoNyito
User avatar
Puybaret
Posts: 9440
Joined: Mon Nov 07, 2005 12:00 pm
Country: Paris, France
Contact:

Re: How to find the vertices of a 3D shape?

Post by Puybaret »

Without knowing what you stored in [font=courier new]geometryArray[/font], it's impossible to understand what is wrong.
If you look for simple examples, you could look at this tutorial and at the source code of ShapeGenerator plugin.
Emmanuel Puybaret, Sweet Home 3D creator
enkonyito
Posts: 607
Joined: Thu May 28, 2015 4:52 pm

Re: How to find the vertices of a 3D shape?

Post by enkonyito »

I use your tutorial to complete my information on the Javadoc of Java3D.

In [font=courier new]geometryArray[/font], the data about the object of any shape that I want to find the vertices is stored.

Code: Select all

[...]
} else if (node instanceof Shape3D) {
    Shape3D shape = (Shape3D)node;
    [...]
    // Read object geometries
    for (int i = 0, n = shape.numGeometries(); i < n; i++) {
      readNodeGeometry(shape.getGeometry(i), parentTransformations, texCoordGeneration,
          textureTransform, cullFace, backFaceNormalFlip);
    }
[...]

[...]
private void readNodeGeometry(Geometry geometry,
                              Transform3D parentTransformations,
                              TexCoordGeneration texCoordGeneration,
                              Transform3D textureTransform,
                              int cullFace,
                              boolean backFaceNormalFlip) {
  if (geometry instanceof GeometryArray) {
    GeometryArray geometryArray = (GeometryArray)geometry;
[...]
The ideal would be to force to use [font=courier new]TRIANGLE_ARRAY[/font].
EnkoNyito
enkonyito
Posts: 607
Joined: Thu May 28, 2015 4:52 pm

Re: How to find the vertices of a 3D shape?

Post by enkonyito »

To have a reference of what I had to look for, I performed tests in Sunflow directly by editing the example_scene.geo.sc file.

I have found that vertices are only well taken into account if they are grouped into a single object defined in the .obj file.

Code: Select all

# 3D model cube_v2.obj

mtllib cube_v2.mtl

g cube

usemtl default

v 0.0 0.0 0.0
v 100.0 0.0 0.0
v 100.0 0.0 100.0
v 0.0 0.0 100.0
v 0.0 100.0 0.0
v 100.0 100.0 0.0
v 0.0 100.0 100.0
v 100.0 100.0 100.0

f 1 2 3
f 1 3 4
f 2 1 5
f 2 5 6
f 1 4 7
f 1 7 5
f 3 2 6
f 3 6 8
f 4 3 8
f 4 8 7
f 7 8 6
f 7 6 5
Results in Sweet Home 3D.
Image Image

By launching the rendering several times, sometimes the triangle mesh light is not well applied.
I think I should put my method [font=courier new]searchVertices (light)[/font] elsewhere than in [font=courier new]exportLightSource[/font] especially since there is redundancy with some methods already present in the PhotoRenderer file.
EnkoNyito
enkonyito
Posts: 607
Joined: Thu May 28, 2015 4:52 pm

Re: How to find the vertices of a 3D shape?

Post by enkonyito »

Using or modifying existing methods in the PhotoRenderer class optimizes the dynamic search for coordinates and vertices indices of a 3D shape. [:)]

The quality and duration of rendering depends on the composition and complexity (number of triangular faces) of the object transforming into light.

Neon digits (created by alaX)
Image

SH3D models
Image Image
EnkoNyito
ndorigatti
Posts: 66
Joined: Fri May 12, 2017 9:54 am
Country: Italia

Re: How to find the vertices of a 3D shape?

Post by ndorigatti »

So, let me understand.. are you finding a way to speed up rendering or trying to find a render result different than before?
enkonyito
Posts: 607
Joined: Thu May 28, 2015 4:52 pm

Re: How to find the vertices of a 3D shape?

Post by enkonyito »

Unfortunately, I do not think it is possible to speed up the rendering with Sunflow.

On the other hand, I found a way for Sweet Home 3D to take into account the mesh light rendering .
EnkoNyito
ndorigatti
Posts: 66
Joined: Fri May 12, 2017 9:54 am
Country: Italia

Re: How to find the vertices of a 3D shape?

Post by ndorigatti »

So that you can have the whole mesh to light up? Could be interesting for my Philips homroo light model, where the glass part would be a mesh light!
User avatar
Puybaret
Posts: 9440
Joined: Mon Nov 07, 2005 12:00 pm
Country: Paris, France
Contact:

Re: How to find the vertices of a 3D shape?

Post by Puybaret »

sometimes the triangle mesh light is not well applied.
Maybe this could be bound to triangles orientation. Did you try to reverse the order of the vertices?
Emmanuel Puybaret, Sweet Home 3D creator
Post Reply New Topic

Who is online

Users browsing this forum: No registered users and 1 guest