[x3d-public] bilinear and coincident Extrusion spines
Andreas Plesch
andreasplesch at gmail.com
Fri Jul 11 07:45:44 PDT 2025
Good example. Checkout what happens to the blue extrusion if you change the
spine to become slightly non-collinear: spine='0 0 0, 0 1 0, 0 0 0.01' .
Here is x3dom :
https://andreasplesch.github.io/Library/Viewer/index.html?url=data:text/plain;base64,PFgzRD4KICA8U2NlbmU+CiAgICAgICAgPFNoYXBlPgogICAgICAgICAgPEFwcGVhcmFuY2U+CiAgICAgICAgICAgIDxNYXRlcmlhbCBkaWZmdXNlQ29sb3I9JzAuMSAwIDAuOCcvPgogICAgICAgICAgPC9BcHBlYXJhbmNlPgogICAgICAgICAgPEV4dHJ1c2lvbiBiZWdpbkNhcD0nZmFsc2UnIGVuZENhcD0nZmFsc2UnIHNjYWxlPScxIDEgMS4yIDEuMiAxLjQgMS40JyBzb2xpZD0nZmFsc2UnIHNwaW5lPScwIDAgMCAwIDEgMCAwIDAgMC4wMScvPgogICAgICAgIDwvU2hhcGU+CiAgPC9TY2VuZT4KPC9YM0Q+
I believe x_ite looks the same (the playground does not seem to accept data
urls). This unexpected result may (or may not) be what the spec. requires.
If so, should there be such a large difference in the result for very small
changes ?
-Andreas
On Fri, Jul 11, 2025 at 9:49 AM Holger Seelig <holger.seelig at yahoo.de>
wrote:
> There is also an Extrusion edge case page on web3D.org, which shows equal
> results both in Castle and X_ITE. X3DOM fails in one case. Please zoom out
> to view all objects.
>
>
> https://www.web3d.org/x3d/content/Basic/X3dSpecifications/ExtrusionEdgeCasesIndex.html
>
> Best regards,
> Holger
>
> —
> Holger Seelig
> holger.seelig at yahoo.de
>
>
> Am 11.07.2025 um 12:46 schrieb Andreas Plesch <andreasplesch at gmail.com>:
>
>
> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/geometry3D.html#NumberOfDistinctSpinePoints
>
> says at least 2 non-coincident points are required. The question was if it
> would make sense to define also the one point case. The Rotations example
> may suggest that it does.
>
> Andreas
>
> On Fri, Jul 11, 2025, 5:35 AM Holger Seelig <holger.seelig at yahoo.de>
> wrote:
>
>> The specification of Extrusion has a section „Coincident spine points“
>> which describes the case when there are coincident spine points and
>> different orientation or scale values:
>>
>> 13.3.5.4.4 Coincident spine points
>>
>>
>> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/geometry3D.html#CoincidentSpinePoints
>>
>> And this is a test for this case for coincident spine points and only
>> orientations, as Andreas already mentioned:
>>
>>
>> https://create3000.github.io/x_ite/playground/?url=https://create3000.github.io/Library/Tests/Components/Extrusion/Rotations.x3d
>>
>> Same with coincident spine points and only scales:
>>
>>
>> https://create3000.github.io/x_ite/playground/?url=https://create3000.github.io/Library/Tests/Components/Extrusion/Scales.x3d
>>
>> Best regards,
>> Holger
>>
>> —
>> Holger Seelig
>> holger.seelig at yahoo.de
>>
>>
>> Am 11.07.2025 um 07:11 schrieb Andreas Plesch via x3d-public <
>> x3d-public at web3d.org>:
>>
>> Extrusions are useful but have many edge cases.
>>
>> Looking into how to improve a bit x3dom's implementation I came across:
>>
>>
>> https://www.web3d.org/x3d/content/examples/ConformanceNist/Geometry/Extrusion/test_YZextrusionIndex.html
>>
>> The beginning of the spine here has a weird 180 degree flip in direction,
>> from -1 to -2 back to 0 on the y axis.
>>
>> I am wondering if adding this flip was unintentional since it is not
>> mentioned in the description?
>>
>> Removing the colinearity of these first spine points to isolate the
>> effect of flipping direction results in:
>>
>>
>> https://andreasplesch.github.io/Library/Viewer/index.html?url=data:text/plain;base64,PFgzRD4KICA8U2NlbmU+CiAgICAgIDxTaGFwZT4KICAgICAgICA8QXBwZWFyYW5jZT4KICAgICAgICAgIDxNYXRlcmlhbC8+CiAgICAgICAgPC9BcHBlYXJhbmNlPgogICAgICAgIDxFeHRydXNpb24gYmVnaW5DYXA9J2ZhbHNlJyBjcm9zc1NlY3Rpb249JzEgMCAwLjc1IDAuNjYgMC41IDAuODcgMC4yNSAwLjk3IDAgMSAtMC4yNSAwLjk3IC0wLjUgMC44NyAtMC43NSAwLjY2IC0xIDAgLTAuNzUgLTAuNjYgLTAuNSAtMC44NyAtMC4yNSAtMC45NyAwLjI1IC0wLjk3IDAuNSAtMC44NyAwLjc1IC0wLjY2IDEgMCcgZW5kQ2FwPSdmYWxzZScgc29saWQ9J2ZhbHNlJyBzcGluZT0nMCAwIC0xLCAwIDAuMDEgLTIsIDAgMCAwJy8+CiAgICAgIDwvU2hhcGU+CiAgICAgIDwvU2NlbmU+CjwvWDNEPg==
>>
>> x_ite interpretes this differently. Extreme spine direction reversals are
>> probably out of spec. scope so I think the Nist Conformance example may
>> have a typo.
>>
>> Another, not well defined but potentially useful edge case is a spine
>> with only coincident points:
>>
>>
>> https://create3000.github.io/x_ite/playground/?url=https://raw.githubusercontent.com/create3000/Library/8f64c4caf4fcc9fc9e429d213caef2feba008efb/Tests/Components/Geometry3D/Extrusion/Rotations.x3d
>>
>> The extrusions are solely based on changes in orientations.
>>
>> Since there is no way to define a unique SCP, these extrusions are
>> undefined. It may be worth defining this edge case explicitly by declaring
>> the SCP axes to align with the local coordinate system. But I think this
>> would require a spec. amendment. Would it be worth considering ?
>>
>> Andreas
>> --
>> Andreas Plesch
>> Waltham, MA 02453
>> _______________________________________________
>> x3d-public mailing list
>> x3d-public at web3d.org
>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>>
>>
>>
>
--
Andreas Plesch
Waltham, MA 02453
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20250711/d3a5fb68/attachment.html>
More information about the x3d-public
mailing list