From 255261e78945e081b763920d4c2e314c74cb0564 Mon Sep 17 00:00:00 2001 From: Alexander Nozik Date: Wed, 2 Oct 2019 22:15:23 +0300 Subject: [PATCH] Fixed rotation order in composites --- .../kotlin/hep/dataforge/vis/spatial/gdml/GDMLTransformer.kt | 3 +++ .../kotlin/hep/dataforge/vis/spatial/gdml/visualGDML.kt | 2 +- .../hep/dataforge/vis/spatial/three/ThreeCompositeFactory.kt | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/dataforge-vis-spatial-gdml/src/commonMain/kotlin/hep/dataforge/vis/spatial/gdml/GDMLTransformer.kt b/dataforge-vis-spatial-gdml/src/commonMain/kotlin/hep/dataforge/vis/spatial/gdml/GDMLTransformer.kt index da1c7f67..b6d7f108 100644 --- a/dataforge-vis-spatial-gdml/src/commonMain/kotlin/hep/dataforge/vis/spatial/gdml/GDMLTransformer.kt +++ b/dataforge-vis-spatial-gdml/src/commonMain/kotlin/hep/dataforge/vis/spatial/gdml/GDMLTransformer.kt @@ -8,9 +8,11 @@ import hep.dataforge.names.toName import hep.dataforge.vis.common.Colors import hep.dataforge.vis.common.VisualObject import hep.dataforge.vis.common.applyStyle +import hep.dataforge.vis.spatial.RotationOrder import hep.dataforge.vis.spatial.VisualGroup3D import hep.dataforge.vis.spatial.VisualObject3D import hep.dataforge.vis.spatial.VisualObject3D.Companion.COLOR_KEY +import hep.dataforge.vis.spatial.rotationOrder import scientifik.gdml.* import kotlin.collections.set import kotlin.random.Random @@ -88,6 +90,7 @@ class GDMLTransformer(val root: GDML) { styles.forEach { final.setStyle(it.key, it.value) } + final.rotationOrder = RotationOrder.ZXY onFinish(this@GDMLTransformer) return final } diff --git a/dataforge-vis-spatial-gdml/src/commonMain/kotlin/hep/dataforge/vis/spatial/gdml/visualGDML.kt b/dataforge-vis-spatial-gdml/src/commonMain/kotlin/hep/dataforge/vis/spatial/gdml/visualGDML.kt index 84f96717..8206c166 100644 --- a/dataforge-vis-spatial-gdml/src/commonMain/kotlin/hep/dataforge/vis/spatial/gdml/visualGDML.kt +++ b/dataforge-vis-spatial-gdml/src/commonMain/kotlin/hep/dataforge/vis/spatial/gdml/visualGDML.kt @@ -25,7 +25,7 @@ private fun VisualObject3D.withPosition( this@withPosition.rotationX = rotation.x() this@withPosition.rotationY = rotation.y() this@withPosition.rotationZ = rotation.z() - this@withPosition.rotationOrder = RotationOrder.ZXY + //this@withPosition.rotationOrder = RotationOrder.ZXY } scale?.let { this@withPosition.scaleX = scale.x.toFloat() diff --git a/dataforge-vis-spatial/src/jsMain/kotlin/hep/dataforge/vis/spatial/three/ThreeCompositeFactory.kt b/dataforge-vis-spatial/src/jsMain/kotlin/hep/dataforge/vis/spatial/three/ThreeCompositeFactory.kt index b6ee8852..96ff9122 100644 --- a/dataforge-vis-spatial/src/jsMain/kotlin/hep/dataforge/vis/spatial/three/ThreeCompositeFactory.kt +++ b/dataforge-vis-spatial/src/jsMain/kotlin/hep/dataforge/vis/spatial/three/ThreeCompositeFactory.kt @@ -11,9 +11,9 @@ import info.laht.threekt.objects.Mesh class ThreeCompositeFactory(val three: ThreePlugin) : MeshThreeFactory(Composite::class) { override fun buildGeometry(obj: Composite): BufferGeometry { - val first = three.buildObject3D(obj.first) as? Mesh ?: error("First part of composite is not a mesh") + val first = three.buildObject3D(obj.first.apply { parent = obj.parent }) as? Mesh ?: error("First part of composite is not a mesh") first.updateMatrix() - val second = three.buildObject3D(obj.second) as? Mesh ?: error("Second part of composite is not a mesh") + val second = three.buildObject3D(obj.second.apply { parent = obj.parent }) as? Mesh ?: error("Second part of composite is not a mesh") second.updateMatrix() val firstCSG = CSG.fromMesh(first) val secondCSG = CSG.fromMesh(second)