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

Python OpenGL中如何获取变换后点的当前世界坐标 可否使用pyrr实现

你完全可以使用pyrr完成和C++ glm逻辑完全一致的坐标变换计算,pyrr默认使用列主序存储矩阵,和glm的存储规则兼容,不需要额外转置处理。

针对你现有代码的补全方案如下:

1. 直接获取变换后的三维坐标(对应C++中把vec4结果转vec3的场景)

import pyrr

somePoint = [x,y,z]
translationMatrix= pyrr.matrix44.create_from_translation(pyrr.Vector3([xTrans, yTrans, zTrans]))
# 直接调用内置方法完成变换,内部会自动处理齐次坐标补1的逻辑
currentPointPosition = pyrr.matrix44.apply_to_vector(translationMatrix, somePoint)

2. 获取和C++完全一致的vec4齐次坐标结果

如果你需要和你C++代码中glm::vec4类型完全对齐的结果,可以手动构造齐次坐标做乘法:

import pyrr

somePoint = [x,y,z]
translationMatrix= pyrr.matrix44.create_from_translation(pyrr.Vector3([xTrans, yTrans, zTrans]))
# 构造齐次坐标,w分量设为1,和glm::vec4(somePoint,1)逻辑一致
point_homogeneous = pyrr.Vector4([*somePoint, 1.0])
# 矩阵乘法,用@运算符或者pyrr.multiply方法都可以
currentPointPosition = translationMatrix @ point_homogeneous

两种方式的计算结果和你C++ glm的计算结果完全一致,可根据后续使用场景选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:51:03