根据视图矩阵, 恢复相机的世界空间的位置

根据视图矩阵, 恢复相机的世界空间的位置

一、方法1

glsl 实现:

js 复制代码
// 从本地局部坐标系(相机空间) 到 世界空间的旋转变换
mat3 getLocal2WorldRotation() {
	mat3 world2localRotation = mat3(
		viewMatrix[0].xyz,
		viewMatrix[1].xyz,
		viewMatrix[2].xyz
	);

	return inverse(world2localRotation);
}

vec3 getCameraPos( in mat3 rotation ) {
    // 相机没有旋转时的世界坐标系下的位置
    const posWCNoRotation = - viewMatrix[3].xyz;
	return rotation * posWCNoRotation;
}

mat3 local2worldRotation = getLocal2WorldRotation();

// 世界坐标系的相机位置
vec3 camPositionWC = getCameraPos( local2worldRotation );

js 实现:

js 复制代码
const viewMat = camera.matrixWorldInverse.elements;

// 旋转矩阵, 方法1
const viewMat = camera.matrixWorldInverse.elements;
const viewRotation = new THREE.Matrix4();
  viewRotation.set(
    viewMat[0], viewMat[4], viewMat[8], 0,
    viewMat[1], viewMat[5], viewMat[9], 0,
    viewMat[2], viewMat[6], viewMat[10], 0,
    0, 0, 0, 1,
  );
viewRotation.invert();

// 旋转矩阵, 方法2
const viewRotation = new THREE.Matrix4().makeRotationFromQuaternion(camera.quaternion);

const pos = new THREE.Vector3(-viewMat[12], -viewMat[13], -viewMat[14]);
pos.applyMatrix4(viewRotation);
console.log(pos);
二、方法2
js 复制代码
// 计算视图矩阵的逆矩阵
mat4 inverseViewMatrix = inverse(viewMatrix);

// 提取相机在世界空间中的位置
vec3 cameraPosition = inverseViewMatrix[3].xyz;
相关推荐
charlie11451419111 小时前
通用GUI编程技术——图形渲染实战(二十七)——坐标变换与矩阵:三级坐标系
c++·学习·c·图形渲染·win32
charlie11451419111 小时前
通用GUI编程技术——图形渲染实战(二十六)——GDI+与GDI架构差异:抗锯齿与渐变
c++·windows·学习·图形渲染·win32
2301_822703202 天前
开源鸿蒙跨平台Flutter开发:跨端图形渲染引擎的类型边界与命名空间陷阱:以多维雷达图绘制中的 dart:ui 及 StrokeJoin 异常为例
算法·flutter·ui·开源·图形渲染·harmonyos·鸿蒙
charlie1145141912 天前
通用GUI编程技术——图形渲染实战(二十五)——Alpha混合与透明效果:分层窗口实战
c++·windows·学习·图形渲染·win32
charlie1145141912 天前
通用GUI编程技术——图形渲染实战(二十四)——GDI Region与裁切:不规则窗口与可视化控制
c++·windows·学习·c·图形渲染·win32
做cv的小昊3 天前
结合代码读3DGS论文(12)——NeurIPS 2024 Spotlight 3DGS经典Backbone工作3DGS-MCMC论文及代码解读
论文阅读·计算机视觉·3d·图形渲染·游戏开发·计算机图形学·3dgs
泡泡茶壶Wending4 天前
OpenGL笔记之深度测试原理
图形渲染
郝学胜-神的一滴5 天前
[简化版 GAMES 101] 计算机图形学 03:线性代数下
开发语言·c++·线性代数·图形渲染
daemon.qiang5 天前
麒麟系统v10服务器版本支持intel 12th集成显卡
服务器·图形渲染
泡泡茶壶Wending9 天前
opengl笔记之透视投影
图形渲染