You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Open3D中仅执行一次3D模型旋转变换?

解决Open3D中3D模型无限旋转的问题

问题原因

你使用register_animation_callback注册的回调函数会每帧被自动调用一次,每次调用都执行obj_mesh.rotate(...)给模型施加10°俯仰旋转,这就导致模型持续无限旋转,而非单次旋转。

解决方法

根据需求选择以下两种方案:

方案1:模型初始化时单次旋转

如果只需要模型加载完成后自动旋转一次,直接在加载模型后执行旋转操作,无需使用动画回调:

from colorama import init
import numpy as np
import open3d as o3d
import cv2

obj_path = "Compressor HD.obj"

if __name__ == "__main__":
    vis = o3d.visualization.VisualizerWithKeyCallback()
    vis.create_window()

    # 加载3D模型并计算法向量
    obj_mesh = o3d.io.read_triangle_mesh(obj_path)
    obj_mesh.compute_vertex_normals()
    
    # 执行单次俯仰旋转(10°)
    obj_mesh.rotate(o3d.geometry.get_rotation_matrix_from_xyz(np.radians([10, 0, 0])), center=[0, 0, 0])
    
    vis.add_geometry(obj_mesh)

    # 添加坐标系
    axis_length = 200 
    coordinate_frame = o3d.geometry.TriangleMesh.create_coordinate_frame(size=axis_length, origin=[0, 0, 0])
    vis.add_geometry(coordinate_frame)

    vis.run()
    vis.destroy_window()
    cv2.destroyAllWindows()

方案2:手动触发单次旋转

如果需要通过按键手动触发旋转,用按键回调替代动画回调,只有按下指定按键时才执行旋转:

from colorama import init
import numpy as np
import open3d as o3d
import cv2

obj_path = "Compressor HD.obj"
obj_mesh = None

# 按键回调:按下P键执行一次10°俯仰旋转
def rotate_pitch(vis):
    global obj_mesh
    obj_mesh.rotate(o3d.geometry.get_rotation_matrix_from_xyz(np.radians([10, 0, 0])), center=[0, 0, 0])
    vis.update_geometry(obj_mesh)
    return False

if __name__ == "__main__":
    vis = o3d.visualization.VisualizerWithKeyCallback()
    vis.create_window()

    # 加载3D模型并计算法向量
    obj_mesh = o3d.io.read_triangle_mesh(obj_path)
    obj_mesh.compute_vertex_normals()
    vis.add_geometry(obj_mesh)

    # 添加坐标系
    axis_length = 200 
    coordinate_frame = o3d.geometry.TriangleMesh.create_coordinate_frame(size=axis_length, origin=[0, 0, 0])
    vis.add_geometry(coordinate_frame)

    # 注册P键回调
    vis.register_key_callback(ord("P"), rotate_pitch)

    vis.run()
    vis.destroy_window()
    cv2.destroyAllWindows()

内容的提问来源于stack exchange,提问作者Ja_cpp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:23:20