今天研究了一下 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 轴的视角。有一种全局感。

manim 中的三维视角的更多相关文章

  1. matlab中的三维坐标系与旋转

    1. matlab中的三维坐标系 matlab中的三维坐标系是使用的右手坐标系: 输入以下代码: >> plot3(0,0,0) >> xlabel('axis X') > ...

  2. ROS_Kinetic_07 ROS中机器人三维物理引擎高保真仿真利器gazebo 7.0

    ROS_Kinetic_07 ROS中机器人三维物理引擎高保真仿真利器gazebo 7.0 ROS kinetic中的gazebo版本是7.0,有很多新的特性. 首先,启动gazebo: ~$ gaz ...

  3. WPF 中的三维文字[转贴]

    原文:WPF 中的三维文字[转贴] 原文: http://msdn.microsoft.com/msdnmag/issues/07/10/Foundations/default.aspx?loc=zh ...

  4. Oculus中OVRPlayerController飞行视角的制作

    最近项目上的事,忙的不可开交.忙里偷闲,记录下Oculus飞行视角的制作 师兄给我的要求是,带上Oculus,通过remote和头盔操作,可以完成飞行我的解决办法:1.消除重力的影响,如同在真空中,就 ...

  5. Scaleform 中的 3D视角相关研究

    参考文献: 1.D3D中的第一人称视角 2.透视投影的原理和实现 http://blog.csdn.net/ww51xh/article/details/2910 3.深入探索透视投影变换 http: ...

  6. [osgearth][原]仿照谷歌,修改oe漫游器中focal(视角切换)功能

    oe中的视角加速感觉好奇怪,就仿照谷歌方式去改了. 先看看oe原来的漫游器改变视角的接口: void CameraManipulator::setViewpoint(const Viewpoint&a ...

  7. Supermap/Cesium 开发心得----获取三维视角的四至范围

    网上目前有两种获取当前Camera的四至范围的方法 方法一    这种方法是最通用的,即使在哥伦布视角(2.5D下依旧能准确获取值) function getCurrentExtent() { // ...

  8. OpenGL 中的三维纹理操作

    #define _CRT_SECURE_NO_WARNINGS #include <gl/glut.h> #include <stdio.h> #include <std ...

  9. matlab中画三维图形

    这里主要讲述两个方法用matlab画三维图形: 1.mesh函数 先看一个简单的例子: x = ::; y = ::; [X, Y] = meshgrid(x, y); Z = zeros(,); Z ...

  10. 点云数据中的三维信息提取pcl

    https://www.hanspub.org/journal/PaperInformation.aspx?paperID=24702 https://wenku.baidu.com/view/160 ...

随机推荐

  1. 【HDC 2024】华为云开发者联盟驱动应用创新,赋能开发者成长

    本文分享自华为云社区<[HDC 2025]华为云开发者联盟驱动应用创新,赋能开发者成长>,作者:华为云社区精选. 6月21日到23日,华为开发者大会(HDC 2024)于东莞松山湖举行,这 ...

  2. 35个Redis企业级性能优化点与解决方案

    Redis作为企业级应用中广泛使用的高性能键值存储数据库,其性能优化是一个复杂且多面的话题.以下是V 哥整理的一些关键的优化点和相应的解决方案,提供给兄弟们参考. Redis的性能优化涉及到硬件选择. ...

  3. C语言:不定长结构体的实现方式

    需求 有时候,我们会遇到一些情况:数据前部分相同,但是后部分长度不固定:数据格式相似,只是尾缀的长度不同,例如某些数据包,需要不定长度. 为了能够同时使用上不同长度的数据.可以用以下的方式实现. 方案 ...

  4. Linux查看系统占用

    ## 查看内存占用 #CPU占用最多的前10个进程: ps auxw|head -1;ps auxw|sort -rn -k3|head -10 #内存消耗最多的前10个进程 ps auxw|head ...

  5. 【仿真】Carla之Docker 运行 及 渲染相关 [6]

    参考与前言 carla官方对于docker 运行的描述: CARLA in Docker Docker的使用:[暂时没贴] 相关已知issue,欢迎补充 https://github.com/carl ...

  6. Python pip 切换为国内镜像源

    参考文章:https://codeplayer.vip/p/j7tmc [windows] 备份记录指令:(永久全局设置pypi国内镜像源地址) 1 pip config --global set g ...

  7. Redis 高阶应用

    生成全局唯一 ID 全局唯一 ID 需要满足以下要求: 唯一性:在分布式环境中,要全局唯一 高可用:在高并发情况下保证可用性 高性能:在高并发情况下生成 ID 的速度必须要快,不能花费太长时间 递增性 ...

  8. Java 面向对象编程之继承的super关键词

    java 继承里面的super关键词 super关键词 一个引用变量,用于引用父类对象 父类和子类都具有相同的命名属性,要调用父类中的属性时使用 super也是父类的构造函数,格式super(参数) ...

  9. [rCore学习笔记 05]第0章作业题

    作业1 略. 作业2 C语言程序 gcc编译 gcc -o main main.c 编译报错 成功产生异常 main.c: In function 'main': main.c:5:26: warni ...

  10. midjourney 生成相似类型图片

    生成类似形象 midjourney 核心就是一次运行3次图片,多尝试 上传此图片到discord里的mj -> 复制图片的link -> 使用describe拆词 也可以自己手动拆词,人工 ...