<div dir="ltr"><div dir="ltr">Hi Don,</div><div><br></div><div>This is a very helpful response. See comments below.</div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Sun, Jul 13, 2025 at 12:29 PM Don Brutzman <<a href="mailto:don.brutzman@gmail.com">don.brutzman@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Thanks for noticing this Andreas.<div><br></div><div>To answer your question generally, the functionality of the specification is expected to be unambiguous.</div><div><ul><li>X3D Architecture version 4.1 draft, clause 13 Geometry3D component, 

13.3.5 Extrusion</li><li><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/geometry3D.html#Extrusion" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/geometry3D.html#Extrusion</a></li></ul><div>To answer specifically, I believe we have always thought of <i>relative </i>distance along the spine as the fraction [0..1] and that is consistent with other u-v-w type mappings in the X3D specification.</div></div></div></blockquote><div><br></div><div>Using relative distance makes most sense to me as well. I just looked up default ElevationGrid texture coordinates which are also a bit ambiguous: "The default texture coordinates range from (0,0) at the first vertex to (1,1) at the last vertex.". But since points are regularly spaced by nature, it is less of an issue. It is more or less obvious that the height component should not be considered for texture coordinate assignment.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>What do you think of this suggested addition after the "Textures are mapped..." sentence that you have quoted above:</div><div><ul><li>"<span style="background-color:rgb(255,255,0)">Relative distances from beginning to end along the <i>crossSection </i>and <i>spine </i>curves are used to compute values in the range [0..1].</span>"</li></ul></div></div></blockquote><div><br></div><div>That works pretty well. There may be a lingering question: Relative to what ? "Distances relative to the total length from .." or perhaps "Distances from beginning to end normalized to the total length along .." may be clearer.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div>Note that there might only be multiple coincident points for a <i>spine </i>vection, permitting rotations of the <i>crossSection</i> according to the orientations field about that single point.</div></div></div></blockquote><div><br></div><div>Yes, that is well defined. The only other question was about spines with only a single point, repeated, which may be somewhat useful.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div>As another potential special case, let's consider all <i>crossSection </i>points to be coincident.  Am not seeing anything in the specification forbidding that.  For a rendered result, am expecting to see a single line connecting each of those single-point <i>crossSection </i>perimeters, i.e. a line made up of segment(s) that gets extruded at an appropriate distance from the spine.</div></div></div></blockquote><div><br></div><div>I am unsure about this special case because it produces a geometric line rather than a surface. The spec. procedure to connect points to quadrilaterals will produce degenerate, zero area triangles in this case. So the spec. would need to be amended, I believe.</div><div>It is pretty straightforward to define a basic crossSection very small relative to the spine length, for an author: "0.001 0.001, 0 -0.001, -0.001 0.001, 0.001 0.001"</div><div>Or scaling the default crossSection.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Editorially, I think we ought to be wary about defining forbidden ill-defined cases.  Such definitions can be unexpectedly ambiguous, and special handling (from forbidden status) might detract unnecessarily from Extrusion animations.</div></div></blockquote><div><br></div><div>The single point spine case is currently forbidden. It may be hard to define in such a way that it would behave well when part of a spine animation. So I tend to agree although there are probably cases when it would be useful, but texturing these may still be difficult to become unambiguous.</div><div><br></div><div>Note that treating collinear points as special in the spec. already may lead to inconsistent animations if spine points line up during an animation, in the case where collinearity removes flipping of the SCP z axis.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div></div><div>Of note is that we do have a number of example Extrusion nodes intended to test baseline capabilities and special cases.  If you or anyone thinks we should add more cases, please advise (single-point <i>crossSection </i>perhaps).</div><div><ul><li>X3D Example Archives: X3D4AM, X3D for Advanced Modeling, Geometric Shapes, Extrusion Examples Test</li><li><a href="https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GeometricShapes/ExtrusionExamplesTestIndex.html" target="_blank">https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GeometricShapes/ExtrusionExamplesTestIndex.html</a></li></ul></div></div></blockquote><div>These helped uncover issues introduced trying to deal with other issues ;) </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Thanks for noting and considering a possible specification improvement.  Have fun with X3D Extrusion!  😀</div></div></blockquote><div><br></div><div>I may try to create a textured simple extrusion like a cylinder with a long and short spine section to demonstrate the impact of texture coordinate generation, probably based on a conformance example..</div><div><br></div><div>Cheers, -Andreas</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div></div><div>all the best, Don</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Jul 12, 2025 at 11:40 PM Andreas Plesch via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Looking into how to generate texture coordinates for Extrusions with all coincident spine points, I noticed this section in the spec.:</div><div><br></div><div>"Textures are mapped so that the coordinates range in the U direction from 0 to 1 along the crossSection curve (with 0 corresponding to the first point in crossSection and 1 to the last) and in the V direction from 0 to 1 along the spine curve (with 0 corresponding to the first listed spine point and 1 to the last)."</div><div><br></div><div>V varies along the spine from 0 to 1. The spec. does not define how V should vary. x3dom uses the distance between spine points to define V. Another option may be to use the index of a spine point to define V. There may be other strategies.</div><div><br></div><div>Both options produce similar results if the spine points are regularly spaced. However, in the case of a spine with all coincident points, the results will be very different. Using distance, all Vs will be 0 (except for last to satisfy the spec.). Using the index, Vs will be distributed.</div><div><br></div><div>Should the spec. better define how Extrusion UVs should vary ? </div><div><br></div><div>Cheers, -Andreas</div><div><br></div></div>
_______________________________________________<br>
x3d-public mailing list<br>
<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
</blockquote></div>
</blockquote></div><div><br clear="all"></div><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Andreas Plesch<br>Waltham, MA 02453</div></div></div></div>