Print at Sep 30, 2020, 3:32:14 AM
Posts: 14   Pages: 2   [ 1 2 | Next Page ]
View all posts in this thread on one page
Posted by enkonyito at Oct 30, 2018, 10:15:15 PM
How to find the vertices of a 3D shape?
Hi,

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

I am currently studying methods related to exportNode of PhotoRenderer.java or writeNode 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 gallery

Posted by enkonyito at Nov 3, 2018, 9:26:08 PM
Re: How to find the vertices of a 3D shape?
For SH3D lights, the types of geometric constructions detected are:
- TriangleArray (like the opaque light panel)
- LineStripArray (like the unviewable light panel).

Using,
GeometryInfo geometryInfo = new GeometryInfo (geometryArray);
with the type LineStripArray, I have the error message:
java.lang.IllegalArgumentException: Unsupported geometry type


Sunflow only considers triangle-based meshes for TriangleMeshLight light sources.
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 gallery

Posted by Puybaret at Nov 4, 2018, 5:49:43 PM
Re: How to find the vertices of a 3D shape?
Without knowing what you stored in geometryArray, 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 developer

Posted by enkonyito at Nov 5, 2018, 4:31:34 PM
Re: How to find the vertices of a 3D shape?
I use your tutorial to complete my information on the Javadoc of Java3D.

In geometryArray, the data about the object of any shape that I want to find the vertices is stored.
[...]
} 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 TRIANGLE_ARRAY.
----------------------------------------
EnkoNyito gallery

Posted by enkonyito at Nov 20, 2018, 7:13:22 PM
Re: How to find the vertices of a 3D shape?
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.
# 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.


By launching the rendering several times, sometimes the triangle mesh light is not well applied.
I think I should put my method searchVertices (light) elsewhere than in exportLightSource especially since there is redundancy with some methods already present in the PhotoRenderer file.
----------------------------------------
EnkoNyito gallery

Posted by enkonyito at Nov 25, 2018, 11:15:56 PM
Re: How to find the vertices of a 3D shape?
Using or modifying existing methods in the PhotoRenderer class optimizes the dynamic search for coordinates and vertices indices of a 3D shape. smile

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)


SH3D models

----------------------------------------
EnkoNyito gallery

Posted by ndorigatti at Nov 26, 2018, 8:35:14 AM
Re: How to find the vertices of a 3D shape?
So, let me understand.. are you finding a way to speed up rendering or trying to find a render result different than before?

Posted by enkonyito at Nov 26, 2018, 5:50:47 PM
Re: How to find the vertices of a 3D shape?
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 gallery

Posted by ndorigatti at Nov 26, 2018, 7:15:11 PM
Re: How to find the vertices of a 3D shape?
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!

Posted by Puybaret at Nov 26, 2018, 8:23:14 PM
Re: How to find the vertices of a 3D shape?
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 developer

Posts: 14   Pages: 2   [ 1 2 | Next Page ]