LDraw.org Discussion Forums
Fake seams in POV-Ray - Printable Version

+- LDraw.org Discussion Forums (https://forums.ldraw.org)
+-- Forum: LDraw Programs (https://forums.ldraw.org/forum-7.html)
+--- Forum: Rendering Techniques (https://forums.ldraw.org/forum-20.html)
+--- Thread: Fake seams in POV-Ray (/thread-22030.html)



Fake seams in POV-Ray - Roland Melkert - 2017-02-08

Anyone knows of an alternative way of faking part seems in POV-Ray besides shrinking all part just slightly?

I added the shrinking option to LDCad's export it looks nice at first glance but then you'll notice the uneven scaling.

For example 5510, the 2x8 plate at the red circle no longer matches the inverted slope brick beneath it.

[attachment=2702]

This is using a scaling of 0.9925

edit: added a zoom
[attachment=2703]


RE: Fake seems in POV-Ray - Travis Cobbs - 2017-02-08

(2017-02-08, 23:08)Roland Melkert Wrote: Anyone knows of an alternative way of faking part seems in POV-Ray besides shrinking all part just slightly?

I added the shrinking option to LDCad's export it looks nice at first glance but then you'll notice the uneven scaling.

For example 5510, the 2x8 plate at the red circle no longer matches the inverted slope brick beneath it.



This is using a scaling of 0.9925

edit: added a zoom

LDView calculates the scaling on a part-by-part basis based on the part's bounding box size in X, Y, and Z, and the bounding box's centroid. For POV exports, the actual seam calculation happens in the POV code based on width, height, and depth, and X, Y, and Z that are calculated by LDView at export time. (See LDXSeamMatrix in any POV file created by LDView.) I believe this concept was copied (with blessing from Lars) from L3P. Note that this means that the actual seam size is consistent between any two parts, no matter their size, and the scaling applied to each part is independent in X, Y, and Z. If you set LDXSW to a large value, you can easily see on plates that the scaling is axis-dependent.


RE: Fake seems in POV-Ray - Travis Cobbs - 2017-02-08

Here is a zoom in of one of LDView's sample models with a relatively large seam width value (0.75):

[Image: KO5cPyu.png]

Here is most of the model, but with a ridiculously large seam width value (10);

[Image: pn4fzfm.png]


RE: Fake seems in POV-Ray - Damien Roux - 2017-02-09

(2017-02-08, 23:56)Travis Cobbs Wrote: Here is a zoom in of one of LDView's sample models with a relatively large seam width value (0.75):

[Image: KO5cPyu.png]

Here is most of the model, but with a ridiculously large seam width value (10);

[Image: pn4fzfm.png]

You can use LGEO, as there are rounded edges, you no longer need seams. Drawback is that not all parts are available in LGEO.


RE: Fake seams in POV-Ray - Roland Melkert - 2017-02-09

(2017-02-08, 23:56)Travis Cobbs Wrote: Here is a zoom in of one of LDView's sample models with a relatively large seam width value (0.75):


Here is most of the model, but with a ridiculously large seam width value (10);
Thanks Travis, I figures something like that was hoping for some alternative (been thinking about merging bevels somehow, but don't know how to do that universally).

I've added the 3 axis scaling method, works great.

Using a 0.3 seam (0.15 both sides of any brick)
[attachment=2705]

Using 2.0 seam
[attachment=2704]


Was fairly simple to do, just added min max vectors to the mesh2 objects as local objects:
Code:
#declare sf_3703_dot_dat=mesh2 {
 #local sfMin=<-160,-4,-10>;
 #local sfMax=<160,24,10>;
 vertex_vectors {
  ......
 }
 #if (doSeams) sfSeam(sfMin, sfMax) #end
#end

And the scaling itself is just a couple of vector operations Smile
Code:
#macro sfSeam(sfMin, sfMax)
#local s=sfMax-sfMin;
#local c=sfMin+0.5*s;
#local ss=<
  #if (s.x<=seamSize) 0.0 #else seamSize #end,
  #if (s.y<=seamSize) 0.0 #else seamSize #end,
  #if (s.z<=seamSize) 0.0 #else seamSize #end
>;

translate -c
scale (s-ss)/s
translate c
#end


Thanks again for the insight.


RE: Fake seems in POV-Ray - Roland Melkert - 2017-02-09

(2017-02-09, 8:11)Damien Roux Wrote: You can use LGEO, as there are rounded edges, you no longer need seams. Drawback is that not all parts are available in LGEO.

LGEO is next on my todo list Smile

Just need to (re)familiarize myself with the multiple libraries and their inner workings as I haven't really used it myself.