首页 > 其他分享 >manim 中的三维视角

manim 中的三维视角

时间:2024-08-18 09:48:40浏览次数:5  
标签:distance 视角 位置 三维 相机 正上方 DEGREES 90 manim

今天研究了一下 manim 中的 ThreeDAxes 和 set_camera_orientation

这里记录一下视角。

manim 中的 3D 坐标系是笛卡尔的三维坐标系,属于右手坐标系,即右手的大拇指,食指,中指垂直,大拇指指向 x 轴,食指指向 Y 轴,中指指向 z 轴。

而在初始化 3D 坐标系,x 轴指向屏幕下方,y 轴是指向屏幕左方,z 轴指向屏幕外部(指向用户位置),如下列方向。

     		    / z
     		  /
  原点   /_____ y
       |
       |
     	 | x

同时 我们需要设置 相机位置

self.set_camera_orientation(phi=0 *DEGREES, theta=-90 * DEGREES, gamma = 0 * DEGREE, focal_distance = 5)

这里相机的位置几个参数

  • phi:代表原点到相机位置组成的直线与 z 轴正向的夹角。为 0 则代表相机位置在 z 轴的正向延展线上。为 30 则代表在以 z 轴为轴心的锥形表面上。
  • focal_distance: 代表相机位置和原点的距离,结合focal_distance 和 phi,就将相机位置定义在锥形的某个曲线上。
  • theta: 代表相机位置在曲线上围绕 z 轴旋转的角度。在旋转的时候,也需要考虑相机本身的正上方,也会随着旋转角度而变化。为 0 则代表位置在 x 轴正向方向,相机正上方朝向原点 。为 30 则代表围绕 z 轴右边旋转 30 度,相机正上方朝向原点。
  • gamma:代表相机的正上方的旋转角度。90 表示向右侧自旋 90 度。

这里需要理解一些例子才能真正理解这几个参数。

例子 1:
self.set_camera_orientation(phi=0 *DEGREES, theta=-90 * DEGREES, gamma = 0 * DEGREE, focal_distance = 5) 这个看到的形式是什么样子的?

答:
相机位置是在z 轴正向上,且相机原本正上方朝向 x 轴负向,围绕 z 轴左转 90 度,那么正上方朝向 y 轴正向,x 轴在相机右侧,z 轴直接看不到。
这就是我们平时正常的 2D 视角。看到的 x 轴向右,y 轴向上。
例子 2:
self.set_camera_orientation(phi=0 *DEGREES, theta=0 * DEGREES, gamma = 0 * DEGREE, focal_distance = 5) 这个看到的形式是什么样子的?

答:
相机位置是在z 轴正向上,相机正上方朝向 x 轴负向,且自己没有任何自旋。
这里也会看到一个 2D 视角,不过 x 轴是向下的,y 轴向右。
例子 3:
self.set_camera_orientation(phi=0 *DEGREES, theta=0 * DEGREES, gamma = 90 * DEGREE, focal_distance = 5) 这个看到的形式是什么样子的?

答:
相机位置是在z 轴正向上,且相机原本正上方朝向 x 轴负向,虽然围绕 z 轴没有转。但是相机自己进行旋转,向右边自旋 90 度,相机的正上方就朝向了 y 轴正向。
和例子 1 一样,这时候我们就看到的 x 轴向右,y 轴向上的 2D 视角。
例子 4:
self.set_camera_orientation(phi=70 *DEGREES, theta=30 * DEGREES, gamma = 0 * DEGREE, focal_distance = 5) 这个看到的形式是什么样子的?

答:
相机位置是在于 z 轴正向查 70 度,且距离为 5 的环形轨道上,初始位置在 x 轴正向上,围绕 z 轴旋转30 度,相机位置在三维空间中 x,y,z 都是正值的位置。而相机正上方朝向原点方向。
这就形成一种俯视且斜视z 轴的视角。有一种全局感。

标签:distance,视角,位置,三维,相机,正上方,DEGREES,90,manim
From: https://www.cnblogs.com/yjf512/p/18365311

相关文章

  • 在线三维CAD中如何实现二维CAD图转三维
    一、前言网页CAD中经常有这样的需求:将二维的CAD图纸通过转换为三维的形状(如将平面二维的图形向上拉伸一定的高度),进而进行三维展示的效果,本文以将平面二维的图形向上拉伸一定的高度为例,实现二维CAD图形转三维图形。二、mxcad和mxcad3dmxcad是一个功能丰富、简易高效的二维CAD开......
  • unity游戏源码和教程:智能分析话语的三维唯美世界
    我不想和任何人说话,大家不要打扰我。这个游戏的源码(含教程文档)我放到了夸克网盘https://pan.quark.cn/s/618fb9459029小区:小区傍晚的雪:小区的晚上:家里:市中心:市街道:郊区:(一)声明小区场景的三维模型来自于UnityStore的unity包:LowPolyJapaneseHousingComplex。很......
  • 【容器安全系列Ⅰ】- 以进程视角探索容器
        使用容器的一个很大好处是,大多数时候你不必考虑后台发生了什么,像Docker和Kubernetes这样的工具,在向用户隐藏系统复杂性方面做得很好。    但是,当您需要调试和保护容器环境时,了解如何在底层与容器进行交互会非常有帮助。幸运的是,由于大多数容器化工具......
  • 三维建模软件:地理信息与遥感领域的智慧构建者
    在地理信息与遥感技术的广阔舞台中,建模软件如同一位卓越的建筑师,以数据为砖瓦,智慧为水泥,构建出一个又一个又一个逼真、动态的虚拟世界。本文将深入探究其技术核心、应用实例、未来趋势,揭示建模软件如何在地理信息与遥感技术中塑造未来。 建模软件的技术核心......
  • [已解决] 使用向日葵远程控制在Ubuntu系统上控制Minecraft存在鼠标移动视角异常
    省流:使用Ctrl+Alt+Enter将当前鼠标指针切换到被控鼠标方指针。问题描述在使用向日葵远程控制连接到我的远程Ubuntu系统中游玩Minecraft时,发现鼠标视角的移动有问题。具体表现为,鼠标可以点击菜单、按钮等,也可以点击选择物品、左键摧毁物品、右键使用物品,然而移动鼠标......
  • 【3DGS】从新视角合成到3D_Gaussian_Splatting
    @目录引言:什么是新视角合成任务定义一般步骤NeRF的做法NeRF的三维重建NeRF的渲染3DGS的三维重建从一组图片估计点云高斯点云模型球谐函数参数优化损失函数和参数优化高斯点的数量控制(AdaptiveDensityControl)新的问题3DGS的渲染:快速可微光栅化3DGS的限制引言:什么是新视角合成......
  • 神经网络之卷积篇:详解三维卷积(Convolutions over volumes)
    详解三维卷积从一个例子开始,假如说不仅想检测灰度图像的特征,也想检测RGB彩色图像的特征。彩色图像如果是6×6×3,这里的3指的是三个颜色通道,可以把它想象成三个6×6图像的堆叠。为了检测图像的边缘或者其他的特征,不是把它跟原来的3×3的过滤器做卷积,而是跟一个三维的过滤器,它的维......
  • Manim的一个用于数学动画的 Python 库中渲染代码的功能。
       Code 函数是Manim(一个强大的数学动画库)中的一个重要工具,旨在将代码片段以视觉化的方式呈现。在教育和演示场合中,向观众展示算法或代码逻辑时,清晰的视觉效果是必不可少的。通过 Code 函数,用户可以轻松地将特定编程语言的代码导入,并且自定义其外观,包括字体、颜色、背景......
  • 三维建模神器:Revit2021怎么下载安装?Revit2021版图文安装教程
    Revit是一款专门为建筑信息模型(BIM)构建的,可以帮助建筑设计师设计、建造和维护质量更好、更高效的建筑,也是现在建筑行业必备的软件之一,现在已经更新了2021的版本,我拿到之后进行了测试,发现还不错,今天我们就来看看Revit2021版本的下载安装方法,详细请看下文图文介绍。软件安装包......
  • 【架构师视角系列】风控场景下的配置中心设计思考
    声明原创文章,转载请标注。https://www.cnblogs.com/boycelee/p/18055933《码头工人的一千零一夜》是一位专注于技术干货分享的博主,追随博主的文章,你将深入了解业界最新的技术趋势,以及在Java开发和安全领域的实用经验分享。无论你是开发人员还是对逆向工程感兴趣的爱好者,都能在《......