Fixed rotation order in composites

This commit is contained in:
Alexander Nozik 2019-10-02 22:15:23 +03:00
parent 39ca362aa8
commit 255261e789
3 changed files with 6 additions and 3 deletions

View File

@ -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
}

View File

@ -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()

View File

@ -11,9 +11,9 @@ import info.laht.threekt.objects.Mesh
class ThreeCompositeFactory(val three: ThreePlugin) : MeshThreeFactory<Composite>(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)