简体   繁体   中英

localRotation is not rotating around the cube center

Sceneform 1.15 on Android

I want to make that the cube renderable is rotating around the own centar.

val anchorNode = AnchorNode().apply {
                setParent(scene)
                worldPosition = Vector3(2f, 3f, 0f)
            }

            scene.addChild(anchorNode)

            dieNode = Node().apply {
                setParent(anchorNode)
                localRotation = Quaternion.eulerAngles(Vector3(10f,20f,60f))
                name = "die"
                renderable = it
            }

I made an animator that is supposed to only rotate the cube around its own center.

private fun roll() {
    val anim = createAnimator()
    val node = scene.findByName("die")!!
    anim.target = node
    anim.setDuration(9000)
    anim.start()
}

private fun createAnimator() : ObjectAnimator {
    val o1 = Quaternion.eulerAngles(Vector3(-90f,180f,90f))
    val animator = ObjectAnimator()
    animator.setObjectValues(o1)
    animator.setPropertyName("localRotation")
    animator.setEvaluator(QuaternionEvaluator())
    animator.setInterpolator(LinearInterpolator())
    animator.setAutoCancel(true)
    return animator
}

But, it happens that while cube is rotating, it is also moved which is not desired behavior.

Screenshots where one of the symetrically placed die in world should be only rotated: 对称放置 一个立方体旋转

The position is not centred for the Cube object. If it is off the centre with respect to the parent object, it will rotate around (0,0,0), if it lies off this axis - the object will move in a circle, not rotate.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM