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

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

在这里插入图片描述

一、方法1

glsl 实现:

// 从本地局部坐标系(相机空间) 到 世界空间的旋转变换
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 实现:

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
// 计算视图矩阵的逆矩阵
mat4 inverseViewMatrix = inverse(viewMatrix);// 提取相机在世界空间中的位置
vec3 cameraPosition = inverseViewMatrix[3].xyz;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/870939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 项目实践课设 图书馆管理系统

一、项目介绍 (1)图书管理 (a)添加图书:在系统中增加图书信息(可自己设计图书的信息:如书号,书名,出版社,等等) (b)查询图书 (c)编辑图书 (d)删除图书 (2&a…

十个必须知道的物流术语(一)

我们日常生活中的每一个包裹,都承载着物流人的辛勤与智慧。 以下物流领域中的专业术语,常常在企业的物流管理中发挥着关键作用。 关于物流的基本概念 01 物流成本 产品在实物运动过程中,如包装、搬运装卸、运输、储存、流通加工等各个活动…

汽车零配件行业看板管理系统应用

生产制造已经走向了精益生产,计算时效产出、物料周转时间等问题,成为每一个制造企业要面临的问题,工厂更需要加快自动化,信息化,数字化的布局和应用。 之前的文章多次讲解了企业MES管理系统,本篇文章就为大…

论文er们,YOLO这口饭得趁热吃

不知道各位有没有看出来,从去年开始YOLO相关的论文就处于一个井喷式状态,SCI各区都能见到它的身影。 这是因为YOLO其实是个很好发论文的方向,需求量很大,热度高,并且好入门,能获取的资源也很多。写论文时一…

JWT (JSON Web Token) 立即失效

使一个 JWT (JSON Web Token) 立即失效可以通过多种方式实现,取决于具体的实现和系统需求。以下是几种常见的方法: 方法一:黑名单机制 适用场景: 需要在特定情况下立即使某个 JWT 失效。 可以接受额外的存储和查询开销。 实现方…

宾馆酒店电视信号高清改造-广电信号接入数字电视同轴高清传输系统应用

宾馆酒店电视信号高清改造-广电信号接入数字电视同轴高清传输系统应用 由北京海特伟业科技有限公司任洪卓发布于2024年7月12日 一、宾馆酒店广电信号接入数字电视同轴高清传输系统建设背景 在当今数字化快速发展的时代,宾馆酒店作为服务行业的重要组成部分&#x…

idea修改全局配置、idea中用aliyun的脚手架,解决配置文件中文乱码

idea修改全局配置 idea中用aliyun的脚手架,创建springBoot项目 解决配置文件中文乱码

解决fidder小黑怪倒出JMeter文件缺失域名、请求头

解决fidder小黑怪倒出JMeter文件缺失域名、请求头 1、目录结构: 2、代码 coding:utf-8 Software:PyCharm Time:2024/7/10 14:02 Author:Dr.zxyimport zipfile import os import xml.etree.ElementTree as ET import re#定义信息头 headers_to_extract [Host, Conn…

内网安全:权限维持的各种姿势

1.Linux权限维持 2.Windows权限维持 目录: 一.Linux权限维持: 1.webshell: 2.定时任务: 3.SUID后门: 4.SSH Key免密登录后门: 5.添加用户后门: 二.Windows权限维持 1.计划任务后门&…

在 Java 中:为什么不能在 static 环境中访问非 static 变量?

在 Java 中:为什么不能在 static 环境中访问非 static 变量? 1、静态(static)变量2、非静态(非static)变量3、为什么不能访问?4、如何访问?5、总结 💖The Begin&#x1f…

2024年用于在 Python 中构建 API 的 8 个开源框架

什么是API? API是一个软件解决方案,作为中介,使两个应用程序能够相互交互。以下一些特征让API变得更加有用和有价值: 遵守REST和HTTP等易于访问、广泛理解和开发人员友好的标准。API不仅仅是几行代码;这些是为移动开…

安装WindowsTerminal并设置默认以管理员身份运行启动终端

安装WindowsTerminal并设置默认以管理员身份运行启动终端 背景:Microsoft Store打不开,且WindowsTerminal没有默认以管理员身份运行。 下载msixbundle类型的安装包:https://github.com/microsoft/terminal/releases 使用管理员运行Windows …

[RK3308H_Linux] 关于8+2(8路模拟麦克风 + 2路es7243e回采)的调试心得

问题描述 RK3308H 使用8路个模拟麦克风录音,2路用es7243e做回采 解决方案: 首先先调8路模拟麦克风,根据原理图确定使用的是哪路I2S。 以下为dts配置,acodec的属性注释附上。 &acodec {status "okay";rockchip,m…

springBoot(若依)集成camunda

1、下图为项目结构 2、最外层 pom引入依赖 <properties><!--camunda 标明版本&#xff0c;注意要个自己的Spring 版本匹配&#xff0c;匹配关系自行查询官网--><camunda.version>7.18.0</camunda.version> </properties> 3、common模块引入依赖 …

retrofit实现原理

Retrofit 是一个用于 Java 和 Kotlin 的类型安全的 HTTP 客户端&#xff0c;它将 RESTful API 的抽象转换为 Java 接口&#xff0c;使得网络请求变得更加简洁和可读。Retrofit 的实现主要依赖于注解处理器和动态代理机制。下面结合源码分析 Retrofit 的实现原理&#xff1a; R…

靖江美食元宇宙

汉堡是一种流行于世界各地的快餐食品&#xff0c;它的主要成分通常包括一个或多个肉饼&#xff08;最常见的是牛肉饼&#xff09;&#xff0c;放在圆形的面包中间&#xff0c;周围可以添加各种配料和调味品&#xff0c;如生菜、番茄、洋葱、酸黄瓜、奶酪以及各种酱汁&#xff0…

Python 开发植物大战僵尸杂交版辅助【全网最详细_查找 + 代码编写一体化零基础也能学会】

目录 辅助最终展示效果 一、文章介绍 二、工具介绍 三、基址搜索 3.1、寻找阳光基址 3.2、寻找卡槽冷却基址 3.3、寻找僵尸刷新时间基址 3.4、寻找大阳光刷新时间基址 3.5、寻找植物编号基址 3.6、寻找场上僵尸数量基址 3.7、寻找僵尸 X 坐标基址 3.8、通过找到的僵…

编制,傻傻分不清?

目录 01.什么是聘用合同? 02.事业单位如何取得编制 03.如何快速判断岗位否有编制? 1.看公告直接告知 2.看是否有权威依据 3.看合同期限与试用期期限 4.看岗位表 5.咨询招考单位 04.事业单位改革备案制编制(员额制) 05.事业编制 与备案制(员额制)的区别? 1.二…

初学者必看的 3 个 Python 小项目

我们都知道&#xff0c;将知识点融入实际操作是提高编程学习效率的关键。尤其对于初学者来说&#xff0c;通过学习一些涉及核心编程概念的简单项目&#xff0c;不仅可以深化对编程语言的理解&#xff0c;还能快速提高解决问题的能力。 下面将探讨三个基础的 Python 项目&#…

Bilibili Android一二面凉经(2024)

BiliBili Android一二面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《BiliBili Android一二面凉经(2024)》。 面试职位: 高级Android开发工程师&…