<div dir="ltr">sorry Sergey, didn&#39;t mean to. &quot;but the name PRIM_NONE is miss leading :) &quot;</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, May 31, 2016 at 8:47 PM, Sergey Sharybin <span dir="ltr">&lt;<a href="mailto:sergey.vfx@gmail.com" target="_blank">sergey.vfx@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Mohamed, please do not confuse guys around.<br><div><br></div><div>PRIM_NONE on intersection would mean intersection happened outside of the instance (rad: intersection was found in scene level BVH). Proper check for intersection would be to either check scene_intersect() return value or to check prim != PRIM_NONE.</div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, May 31, 2016 at 8:45 PM, Sergey Sharybin <span dir="ltr">&lt;<a href="mailto:sergey.vfx@gmail.com" target="_blank">sergey.vfx@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi,<div><br></div><div><span style="font-size:12.8px">triangle_point_normal() only uses object to get negative scale flag. So what you have to do is to apply object inverse transform on Ng and P.</span></div><div><span style="font-size:12.8px"><br></span></div><div>Without checking the code, something like this should work:</div><div><br></div><div>if(object != OBJECT_NONE) {</div><div>  Transform tfm = object_fetch_transform(kg, isect-&gt;object, OBJECT_INVERSE_TRANSFORM);</div><div>  P = transform_point(&amp;tfm, P);</div><div>  Ng = transform_direction(&amp;tfm, Ng);<br></div><div>}</div></div><div class="gmail_extra"><br><div class="gmail_quote"><span>On Tue, May 31, 2016 at 7:27 PM,  <span dir="ltr">&lt;<a href="mailto:laurent.boiron@dunwich.fr" target="_blank">laurent.boiron@dunwich.fr</a>&gt;</span> wrote:<br></span><div><div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
I am working on path tracing kernel in cycles and I am facing a behavior<br>
of ray/scene intersection that I am not clearly understanding. Here is<br>
my problem:<br>
<br>
For a given ray sent from the camera, I try to find the object<br>
intersected by the ray, the point of intersection ray/triangle in world<br>
space and his geometric normal.<br>
<br>
My solution looks like that:<br>
<br>
==============<br>
bool hit = scene_intersect(kg, &amp;ray, visibility, &amp;isect, NULL, 0.0f,<br>
0.0f);<br>
if( !hit ) return;<br>
<br>
//get object ID (inspired from<br>
int object = (isect.object == PRIM_NONE)?<br>
kernel_tex_fetch(__prim_object, isect.prim): isect.object;<br>
<br>
int prim = kernel_tex_fetch(__prim_index, isect.prim);<br>
float3 Ng,Pi;<br>
<br>
//compute intersection point and geometrical normal (from<br>
kernel/geom/geom_triangle.h )<br>
triangle_point_normal(kg, object, prim, isect.u, isect.v, &amp;Pi, &amp;Ng,<br>
&amp;stub );<br>
==============<br>
<br>
It works fine EXCEPT in some cases when I have two objects sharing the<br>
same mesh. In this special case the object ID is the same for both<br>
object and coordinates of Pi are in object space. It happens only for<br>
those two objects, others give correct results.<br>
<br>
So my question is:<br>
How should I differentiate those two objects sharing the same mesh ?<br>
what is exactly the meaning of isect.object == PRIM_NONE  returned by<br>
scene_intersect function ? And how can I guess if ray intersects unique<br>
mesh or a mesh instance ?<br>
<br>
Any enlightenment would be very appreciated.<br>
<br>
Thanks,<br>
<br>
<br>
Laurent<br>
_______________________________________________<br>
Bf-cycles mailing list<br>
<a href="mailto:Bf-cycles@blender.org" target="_blank">Bf-cycles@blender.org</a><br>
<a href="https://lists.blender.org/mailman/listinfo/bf-cycles" rel="noreferrer" target="_blank">https://lists.blender.org/mailman/listinfo/bf-cycles</a><br>
</blockquote></div></div></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div data-smartmail="gmail_signature"><div><span style="color:rgb(102,102,102)">With best regards, Sergey Sharybin</span></div></div>
</font></span></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div data-smartmail="gmail_signature"><div><span style="color:rgb(102,102,102)">With best regards, Sergey Sharybin</span></div></div>
</div>
</div></div><br>_______________________________________________<br>
Bf-cycles mailing list<br>
<a href="mailto:Bf-cycles@blender.org">Bf-cycles@blender.org</a><br>
<a href="https://lists.blender.org/mailman/listinfo/bf-cycles" rel="noreferrer" target="_blank">https://lists.blender.org/mailman/listinfo/bf-cycles</a><br>
<br></blockquote></div><br></div>