【问题标题】:How can I rotate a model, apply that rotation, and then rotate it back?如何旋转模型,应用该旋转,然后将其旋转回来?
【发布时间】:2020-01-11 09:45:18
【问题描述】:

我想将模型沿 x 轴旋转 90 度,应用该旋转,然后对 y 轴和 z 轴执行完全相同的操作。之后,我需要将模型旋转回来。我认为只需对每个轴应用相反的旋转就可以了,但这显然不会成功...

真正令人沮丧的是,代码的“损坏”部分是我正在应用第一轮旋转。如果我手动执行完全相同的过程,我没有这个问题。如果我不应用旋转,这段代码对我来说毫无用处(我用它来获取每个连续旋转的 z 边界)

import bpy
import math

model = bpy.data.objects['model']

zmax = [0, 0, 0]

for i in range(3):

    zmax[i] = model.dimensions[2] 

    model.rotation_euler[i] += math.pi/2            #rotate

    model.select_set(True)                          #select model
    bpy.ops.object.transform_apply(rotation=True)   #apply rot

for i in range(3):
    model.rotation_euler[i] -= math.pi/2            #rotate to original posi

模型似乎只是围绕一个轴旋转,但我无法确定这一点。如果你运行脚本足够多次,它最终会出现在同一个位置。

【问题讨论】:

  • 如果您在这里找不到帮助,您也可以考虑将您的问题发布到Blender SE
  • 我不是 Blender 脚本方面的专家,但相对于世界空间或对象空间可能会发生旋转。也许你用错了。
  • 您的步骤与仅以相反的顺序读取三个维度值有何不同?

标签: python blender


【解决方案1】:

为将来可能偶然发现此问题的任何人快速回答我自己的问题:答案在于改用四元数旋转。其他一切都可以做同样的事情,但是如果您要进行复杂的旋转,则必须使用四元数而不是度数。

【讨论】:

    猜你喜欢
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多