[x3d-public] Extrusions, take 3
Vincent Marchetti
vmarchetti at ameritech.net
Wed Jan 27 09:43:45 PST 2016
This case illustrates the difficulty of solving this problem. Think about simple 2 point spines which are almost the singular case that Seva identifies:
Case 1 (0,0,0) - (0.01,-1, 0) : In this case standard is unambiguous , I believe, and the x axis of the SCP is (very nearly) in the -x axis direction of the global coordinate system; because is is an almost
180 degree rotation about the z axis that takes +y to the spine segment
Case 2 (0,0,0) - (0.0, -1, 0.01) : Again, unambigous , x axis of the SCP is in +x axis direction of the global coordinate system, because it is an almost 180 degree rotation about the x axis that takes +y to the spine segment
Two spines whose endpoints are very close together, but if the cross section of the spine is asymmetric then resulting extrusions are quite dissimilar. I think this problem is fundamental and has to do with the complications of defining parallel transport on a spherical surface, so it's not going to be fixed by tweaking the definition of CSP or making arbitrary definitions for the standard in the edge cases such as this.
In my original response to take 3 of this issue, I suggested workarounds that would enable a modeller to get the results she wanted, for example by defining everything for a (0,0,0)-(0,0,1) spine and then 'Transform' it to the desired location and orientation. I understand now that Animation of the extrusion gives you a problem, if you're animating the snake near one of these singular directions you don't want it's head to suddenly spin around as the endpoint moves slightly.
If we're looking for concepts that can be added to version 4 of X3D, and would help resolve the extrusion problem, it might be this: The concept of a link between a shape and either another shape or to a previous version or state of the shape, with the semantics that ambiguities with realizing either of the shapes would be resolved by forcing them to be "as similar as possible". I know this is vague when said abstractly, but perhaps the animation example is more concrete, you generally animate so that differences in shapes from frame to frame are small and gradual. There is a version of this idea in the current Extrusion definition:
"""
g. • After determining the Z-axis, its dot product with the Z-axis of the previous spine point is computed. If this value is negative, the Z-axis is flipped (multiplied by −1). In most cases, this prevents small changes in the spine segment angles from flipping the cross-section 180 degrees"
"""
This is an attempt to prevent small changes in the bend of a spine to cause sudden 180 rotations of the SCP.
Vince
> On Jan 27, 2016, at 11:04 AM, Alekseyev, Vsevolod (NIH/NIAID) [E] <VAlekseyev at niaid.nih.gov> wrote:
>
>>> 1) When the spine goes (0,0,0)-(0,-1,0), what is the CSP?
>
>> I'm not seeing where the specification defines the spine-aligned cross-section plane (SCP) when only 2 unique points are provided.
>
> It does: " If the entire spine is collinear, the SCP is computed by finding the rotation of a vector along the positive Y-axis (v1) to the vector formed by the spine points (v2). The Y=0 plane is then rotated by this value." The problem is that the rotation of the +Y vector to the -Y direction is not uniquely defined.
>
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
Vincent Marchetti
vmarchetti at ameritech.net
More information about the x3d-public
mailing list