Any octane user ? Closed  Locked
 1-12  13-32  33-52  53-72  73-92  93-101

Previous
Next
 From:  candide
3386.33 In reply to 3386.32 
Here's the output from Octane, with a simple diffuse material (with normal smoothing turned on or off). The black triangles is another problem Octane is currently having. Are the cylinders supposed to be completely smooth? I can see some larger segments on the sides, even with smoothing turned on


Attachments:

  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  vodkamartini
3386.34 In reply to 3386.32 
Is the relevant discussion over in the octane forum in a private thread for registered beta testers only or something? I couldn't find it when I searched.

Just going by what I've seen here, I agree with Michael's assertion that the vertex normals aren't being handled correctly. I don't like that example Radiance gave with the sphere from blender. It sounds like he just selected a few faces, flipped them, and exported. Seeing that the faces are messed up in Octane doesn't prove anything about how the vertex normals are being handled, since the winding order of the vertices in the face definitions would also have changed. Octane could very well still be just averaging face normals. I just can't see the usefulness in that example.
  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  candide
3386.35 In reply to 3386.34 
The thread is in the subforums for licensed Octane customers, yes. I'll ask to have it moved to the general area so that other folks can see it
  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
3386.36 In reply to 3386.33 
Hi candide, thanks for testing that.

> Are the cylinders supposed to be completely smooth? I can
> see some larger segments on the sides, even with smoothing
> turned on

Yeah, it should be completely smooth if it was shaded using the vertex normals that are stored in the file.

If you see any segments at all, it means that smoothing is being created from the polygon data (which is in separate pieces because it was saved with no welding out of MoI) instead of using the true cylinder normals that are in the OBJ file.

For example here is what it looks like imported into Cinema4D and rendered, note that there is no visible seam between any of the segments:



- Michael

  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
3386.37 In reply to 3386.36 
So Phil - a welded box and this unwelded segmented cylinder are both good very simple test cases for Octane.

It's really important for both of these simple cases (or at the very least the unwelded case) to work in order for CAD data to be handled well.

As best that I can tell, the problem is that the vertex normals in the OBJ file are not being used for doing the shading.

If they were, then the box would have flat looking faces instead of having improper smoothing applied there, and the cylinder would have smooth looking faces instead of having improper creasing applied in that case.

- Michael

EDITED: 28 Mar 2010 by MICHAEL GIBSON

  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Phil (PHILBO)
3386.38 
Thanks Michael and Paq for putting so much time into this issue. I've learned a lot from reading this and will forward it to Radiance.
  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Phil (PHILBO)
3386.39 
I tried to compare a cube exported with Blender and one with MOI3D.

The Blender file is this:

# Blender3D v249 OBJ File:
# www.blender3d.org
mtllib Blender-Cube.mtl
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -1.000000
v 1.000000 1.000000 1.000000
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000
vn 0.000000 0.000000 -1.000000
vn -1.000000 -0.000000 -0.000000
vn -0.000000 -0.000000 1.000000
vn -0.000001 0.000000 1.000000
vn 1.000000 -0.000000 0.000000
vn 1.000000 0.000000 0.000000
vn 0.000000 1.000000 -0.000000
vn -0.000000 -1.000000 0.000000
usemtl Material
s off
f 5//1 1//1 4//1
f 5//1 4//1 8//1
f 3//2 7//2 8//2
f 3//2 8//2 4//2
f 2//3 6//3 3//3
f 6//4 7//4 3//4
f 1//5 5//5 2//5
f 5//6 6//6 2//6
f 5//7 8//7 6//7
f 8//7 7//7 6//7
f 1//8 2//8 3//8
f 1//8 3//8 4//8


That's what I'd expect. Why is the MOI file containing 12 points and in duplicate?

mtllib MOI-Cube.mtl
o object1
g object1
v 1.00000000 0.00000000 0.00000000
v 0.00000000 0.00000000 0.00000000
v 0.00000000 0.00000000 -1.00000000
v 1.00000000 0.00000000 -1.00000000
v 1.00000000 1.00000000 0.00000000
v 0.00000000 1.00000000 0.00000000
v 0.00000000 1.00000000 -1.00000000
v 1.00000000 1.00000000 -1.00000000
v 1.00000000 0.00000000 0.00000000
v 0.00000000 0.00000000 0.00000000
v 0.00000000 1.00000000 0.00000000
v 1.00000000 1.00000000 0.00000000
v 0.00000000 0.00000000 -1.00000000
v 0.00000000 0.00000000 0.00000000
v 0.00000000 1.00000000 0.00000000
v 0.00000000 1.00000000 -1.00000000
v 1.00000000 0.00000000 -1.00000000
v 0.00000000 0.00000000 -1.00000000
v 0.00000000 1.00000000 -1.00000000
v 1.00000000 1.00000000 -1.00000000
v 1.00000000 0.00000000 -1.00000000
v 1.00000000 0.00000000 0.00000000
v 1.00000000 1.00000000 0.00000000
v 1.00000000 1.00000000 -1.00000000
vt 0.00000000 1.00000000
vt 0.00000000 0.00000000
vt 1.00000000 0.00000000
vt 1.00000000 1.00000000
vt 0.00000000 1.00000000
vt 0.00000000 0.00000000
vt 1.00000000 0.00000000
vt 1.00000000 1.00000000
vt 0.00000000 1.00000000
vt 0.00000000 0.00000000
vt 1.00000000 0.00000000
vt 1.00000000 1.00000000
vt 0.00000000 1.00000000
vt 0.00000000 0.00000000
vt 1.00000000 0.00000000
vt 1.00000000 1.00000000
vt 0.00000000 1.00000000
vt 0.00000000 0.00000000
vt 1.00000000 0.00000000
vt 1.00000000 1.00000000
vt 0.00000000 1.00000000
vt 0.00000000 0.00000000
vt 1.00000000 0.00000000
vt 1.00000000 1.00000000
vn 0.00000000 -1.00000000 0.00000000
vn 0.00000000 -1.00000000 0.00000000
vn 0.00000000 -1.00000000 0.00000000
vn 0.00000000 -1.00000000 0.00000000
vn 0.00000000 1.00000000 0.00000000
vn 0.00000000 1.00000000 0.00000000
vn 0.00000000 1.00000000 0.00000000
vn 0.00000000 1.00000000 0.00000000
vn 0.00000000 0.00000000 1.00000000
vn 0.00000000 0.00000000 1.00000000
vn 0.00000000 0.00000000 1.00000000
vn 0.00000000 0.00000000 1.00000000
vn -1.00000000 0.00000000 0.00000000
vn -1.00000000 0.00000000 0.00000000
vn -1.00000000 0.00000000 0.00000000
vn -1.00000000 0.00000000 0.00000000
vn 0.00000000 0.00000000 -1.00000000
vn 0.00000000 0.00000000 -1.00000000
vn 0.00000000 0.00000000 -1.00000000
vn 0.00000000 0.00000000 -1.00000000
vn 1.00000000 0.00000000 0.00000000
vn 1.00000000 0.00000000 0.00000000
vn 1.00000000 0.00000000 0.00000000
vn 1.00000000 0.00000000 0.00000000
s 1
usemtl Default
f 1/1/1 2/2/2 3/3/3 4/4/4
s 2
f 8/8/8 7/7/7 6/6/6 5/5/5
s 3
f 12/12/12 11/11/11 10/10/10 9/9/9
s 4
f 13/13/13 14/14/14 15/15/15 16/16/16
s 5
f 17/17/17 18/18/18 19/19/19 20/20/20
s 6
f 24/24/24 23/23/23 22/22/22 21/21/21
  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  candide
3386.40 In reply to 3386.39 
If you tell Moi to weld vertices for export, it will create 8 too
  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
3386.41 In reply to 3386.39 
Hi Phil,

> That's what I'd expect. Why is the MOI file containing 12
> points and in duplicate?

It's like Candide wrote above - turn on the "Weld vertices along edges" option in MoI and then you will get an 8 vertex cube with shared vertices between the faces.

That's exactly what the weld option in MoI controls - whether to generate shared points where surfaces meet, or whether to have individual points for each surface but that are stacked up on the same location in space.

If you enable weld then you should be able to create an 8 vertex cube that will have the problem shown above when rendered in Octane.

- Michael
  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Phil (PHILBO)
3386.42 In reply to 3386.41 
Here's an update. Radiance added Smooth Groups Support (not 100% finished yet) and it improved the situation greatly.

Here's a file that PAQ exported from MOI.

Without Smooth Groups.





With Smooth Groups.




Thanks for all the support Michael. I appreciate your insight and putting up with us as we work to make Octane Render a great tool for MOI users.

  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
3386.43 In reply to 3386.42 
Hi Phil, that's nice to have some progress there!

But really smoothgroups is not the best solution - the best solution is to not try and do any kind of additional smoothing calculations or break angles or anything like that at all, and just use the vertex normals as provided in the OBJ file.

You're still going to see various artifacts if the accurate vertex normals are not used for shading, for example in your "with smooth groups" post above, there are some irregularities visible in this area here:




That is supposed to be a perfectly smooth sphere, and the vertex normals that are in the OBJ file come from that sphere.

But if you try to recreate the vertex normals from the polygon data alone, _even with a smoothing groups mechanism enabled_ (!!!) you won't get as good of a result as just using the normals that are stored in the file.

I don't really know how I could explain it in any better ways than above in this thread, did you see my prior simplified explanation about why smoothing groups should not have anything to do with rendering the output from MoI? That was here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=3386.16


What about the cylinder case as posted above, does the new Octane smoothing groups mechanism solve that problem?


- Michael

  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  PaQ
3386.44 In reply to 3386.42 
Hi Phil,

It's still completely amazing that Radiance is trying to resolve this shading issues using smoothing groups.
It doesn't make any sence ... it's like importing the object in 3dsmax, remove the vertex normal map, and
using the smoothing group system to rebuild the normal and the sharp edges. That will NEVER match the accuracy and
the shading look from the original .obj with proper vertex normal.

This is how it looks in modo, without any smooth group, nor edge split.



Now, the smoothing goup system is super cool for poly software, it's definitively a nice feature ... it will enhance MoI (or cad)
models a lot, but will never come close to other render engine solution like C4D, Modo, LW, Maya Max etc.

Well it's just a non progammer advice :P

EDITED: 3 Dec 2015 by PAQ

  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
3386.45 In reply to 3386.43 
Hi Phil, any irregularites in the vertex normals will especially show up in areas with specular highlights in them or with reflective materials.

You really want to just be using those normals for shading instead of calculating anything by smoothing groups at all.

Here's a comparison from loading that exact same OBJ file into Cinema4D, which does utilize the vertex normals stored in the file for shading - as you can see it gives a "perfect" result - every area is shaded exactly the same as the original NURBS data, that's the kind of high quality that you get if using the stored vertex normals :



- Michael
Attachments:

  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  radiance
3386.46 In reply to 3386.45 
Hi guys,

Those images are from a work in progress, the smooth group implementation is not finished.
People don't seem to understand things so i'll clarify them:

* I am not re-calculating vertex normals in octane, if they are present in the OBJ file, they are read and used directly for rendering. they are not modified or re-created by an averaging process.

* the images posted by philbo are not %100 in that the groups are used, but the correct splitpoints are not calculated yet. a vertex that is shared by 2 groups is currently set to the face normal, which gives the remaining facetting you see in the smoothgroup render. I'm still developing it and i need to write the code that handle these situations.

So just a bit of patience and when i'm done i'm sure it will look %100.
Phil posted those images a bit pre-maturely here, they are work in progress and clearly show that smoothing groups are the solution to the issue.

Radiance
  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  vodkamartini
3386.47 In reply to 3386.44 
Yeah I'm not sure why a renderer is looking at the smoothing group data at all. I always considered the smoothing group definitions in an .obj file to be "metadata" for the poly modeling apps. It's just an oldschool way for artists to have some control over the vertex normals. The vn definitions should always be what's referenced, even if smoothing groups were used to generate them.
  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
3386.48 In reply to 3386.42 
Hi Phil, also if it helps any here is again the quote from the OBJ format spec:

quote:

vn i j k

Polygonal and free-form geometry statement.

Specifies a normal vector with components i, j, and k.

Vertex normals affect the smooth-shading and rendering of geometry.
For polygons, vertex normals are used in place of the actual facet
normals. For surfaces, vertex normals are interpolated over the
entire surface and replace the actual analytic surface normal.

When vertex normals are present, they supersede smoothing groups.

i j k are the i, j, and k coordinates for the vertex normal. They
are floating point numbers.


Note the part that I put in bold - it is intended that when vertex normals are present in an OBJ file, that they are used to shade the polygons and smoothing groups actually have no role in the rendering.

Smoothing groups is a mechanism that you use when you are trying to create vertex normals from a bunch of polygons - if you have some better quality normals like ones that came from a NURBS surface, you need to use those better quality ones instead of trying to create new ones which will not be as accurate.

- Michael
  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  radiance
3386.49 In reply to 3386.47 
smoothing groups are not used to recreate any vertex normals.
they are only used to define the bounds of interpolating the provided vertex normals during rendering.

without smoothing groups, models with large angles between polygons get abnormal shading, even when you use the provided high-quality vertex normals.
you need smooth groups in the OBJ file to render them correctly.

smoothing groups have nothing to do with recreating vertex normals in any way.
i think you're mixing up the concept of using smoothing groups in a modeling application,
and the transport of data in OBJ.

Radiance
  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
3386.50 In reply to 3386.46 
Hi Radiance,

quote:
* I am not re-calculating vertex normals in octane, if they are present in the OBJ file, they are read and used directly for rendering. they are not modified or re-created by an averaging process.


Every test that PaQ has done is showing otherwise though.

A good simple test is the cylinder case I posted above - if the vertex normals from the file were being used for shading, that would render as a completely smooth cylinder instead of in segments with visible breaks between them.

Also another thing doesn't make any sense - if you're using the vertex normals from the file for shading, then why are you also doing stuff related to smoothing groups?

A smoothing mechanism is something that is only used when you are creating vertex normals from polygon faces.

So it is simply not physically possible to both be using stored vertex normals, and at the same time using a smoothing group mechanism - if you are using smoothing groups it means you are calculating vertex normals and if you are calculating vertex normals it means you are not using the stored ones...


It's an "either or" situation - Either you are using the stored vertex normals, _OR_ you are using a smoothing group mechanism to create vertex normals.

You can't be doing both at the same time.

All signs point towards you creating the normals from the polygon data and not using the normals from the OBJ file to shade with.


- Michael
  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
3386.51 In reply to 3386.49 
Hi Radiance,

quote:
smoothing groups are not used to recreate any vertex normals.
they are only used to define the bounds of interpolating the provided vertex normals during rendering.


That's not proper vertex normal handling.

Again I will quote directly from the OBJ spec:

quote:

vn i j k

Polygonal and free-form geometry statement.

Specifies a normal vector with components i, j, and k.

Vertex normals affect the smooth-shading and rendering of geometry.
For polygons, vertex normals are used in place of the actual facet
normals. For surfaces, vertex normals are interpolated over the
entire surface and replace the actual analytic surface normal.

When vertex normals are present, they supersede smoothing groups.

i j k are the i, j, and k coordinates for the vertex normal. They
are floating point numbers.



Note the part that I have put in bold - it is intended that when vertex normals are present in the OBJ file, they are used to shade the polygon and smoothing groups are completely unused and should not affect the rendering in any way.

If you read the vertex normals from the file, all the normals for every face are already defined and there is nothing you need to do with smoothing group processing.

Just take the normals that the face is using and use them.... Don't modify them by break angles or smoothing groups or anything like that.

Maybe you are using a completely different term for what "vertex normal" is or something?

- Michael
  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  radiance
3386.52 In reply to 3386.50 
Hi,

I will explain.

look at the cone in the first image.
the vertex normals are shown as the lightblue lines.

if you render this object smooth using the vertex normals supplied,
you get ugly shading.

because the renderer will interpolate the vertex normal of the base piece center vertex with the vertex normals of the edges of the base of the cone.







there are 2 solutions to this:

1. split the cone triangles and the base triangles into 2 groups, eg smooth groups.
the renderer still uses the supplied vertex normals, but it does'nt interpolate vertex normals shared between 2 groups during rendering (i'm not talking about remaking / averaging new normals, i'm talking about computing the shading tangent from the vertex normals during raytracing)

this is the solution the the problem here, that's why i'm adding smoothgroup support to octane.

2. split the object into 2 objects, thereby duplicating the shared vertices.
this can be done with the 'edgesplit' modifier in blender, and this is what most of our users do (who use blender).
it solves the problem because you basically end up with 2 objects, eg all the shared vertices between the base and the top of the cone are duplicated at the same positions, but you're model has much more vertices.

these images are an example of the edgesplit (eg nr 2) solution:






the problem with paq's models is that they require solution 1, since moi3d exports them all as single vertices, and you use the smooth groups to create the bounds between what is what during tangent space interpolation.
you can see the wip smoothgroup image posted by phil solves the issue. it's still not perfect because as i said it's a work in progress and i'm not redefining the bounds correctly yet.


Radiance

  More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged
 
 

 

 
Show messages:  1-12  13-32  33-52  53-72  73-92  93-101