// Two possibilities:
// - Only legal to set one of them
// - Or apply them all in deterministic order
archetype Transform {
mat4: Option<Mat4>,
translation: Option<Translation3>,
mat3: Option<Mat3>,
rotation: Option<Rotation3D>,
scale3: Option<Scale3D>,
scale: Option<Scale>,
}
Introduce a new boolean component that coerces a transform batch to be out of tree. OutOfTreeTransform { enabled: bool }
if one encounters several several parent transforms and if they have the OutOfTreeTransform == false the viewer issues a warning and resolves in a best effort manner
Drawback: Can no longer have out of tree transform side by side with in-tree transforms
Remaining todo items:
LeafTransform3Dwith all the associated ripple effect [...] NewLeafTransform3D, replacingOutOfTreeTransform3D#7015Scale3D/Transform3D/TranslationRotationScale3Ddatatypes, removeTransform3Dcomponent #7000LeafTranslation(centers),LeafRotationQuatandLeafRotationAxisAngledirectly onBoxes3D/Ellipsoids3D#7029Rotation3Dcomponent & datatype #7030LeafTransform3Don Box3D & Arrows3D & Ellipsoids instead (don't forget to point out transform relationship!) UseLeafTranslation(centers),LeafRotationQuatandLeafRotationAxisAngledirectly onBoxes3D/Ellipsoids3D#7029affine3d=helper. #3645RotationMatrixsimilar toQuaternionandRotationAxisAngle#2868from_parent#6863Old proposal
How to handle
OutOfTreeTransform:Introduce a new boolean component that coerces a transform batch to be out of tree.
OutOfTreeTransform { enabled: bool }if one encounters several several parent transforms and if they have the
OutOfTreeTransform == falsethe viewer issues a warning and resolves in a best effort mannerTo consider: The fallback provider for
OutOfTreeTransformcan be clever and look at transform counts, automatically assumingtrueif there's several transforms.Drawback: Can no longer have out of tree transform side by side with in-tree transforms