3d TO 2d

作者: 霞客环肥 | 来源:发表于2019-06-10 17:24 被阅读0次

已知:3d模型的顶点,1256个;
对应的三角面片。
求:此3d模型的2d照片。

step1: 载入数据;

vertices = np.load("meanFace.npy")
triangles = np.load("mesh.npy")

这里,vertices的shape(1, 3768).

step2: 调整顶点,进行旋转/平移/缩放,改变物体位置;

s = 180/(np.max(vertices[:, 1] - np.min(vertices[:, 1])))
R = angle2matrix([0, 30, 0])
t = [0, 0, 0]

这里是相似变换,所谓相似变换可以看作是在不同位置看同一场电影。

transformed\_vertices = s*R.dot(vertices) + t

image.png
image.png

step3: 调整相机位置;
即从世界坐标系,变为相机参考系。
这里相机位置为(0, 0, 200)
这时再去看这个meanFace,

image.png

camera_verticestransformed_vertices,形状角度大小皆无变化,观看的角度变了。

step4: 变换到归一化相机坐标里。
在相机模型里,归一化相机坐标是使Z=1,成为透视投影;
除了射影变换,还有正交投影。

举个简单的例子来说明正交投影与透视投影照相机的区别。使用透视投影照相机获得的结果是类似人眼在真实世界中看到的有“近大远小”的效果(如下图中的(a));而使用正交投影照相机获得的结果就像我们在数学几何学课上老师教我们画的效果,对于在三维空间内平行的线,投影到二维空间中也一定是平行的(如下图中的(b))。

image.png

step5: 渲染成image。
需要从归一化相机坐标,变换到uv坐标系。


image.png

相关文章

  • UIView 常见翻转动画

    2D动画 Y轴3D翻转 水平2D 旋转

  • OpenGL 入门

    走入3D 2D + 透视 = 3D 2D 笛卡尔坐标系image.png 3D 笛卡尔坐标系image.png 认...

  • 2D与3D

    前言 说到2d与3d的转换,到底什么是2d,什么又是3d,看下图: 所谓的2d和3d就是我们理解的二维空间和三维空...

  • 3DMax操作笔记

    3d 2d 2d转换3d 互相转换 2d线的 断开和连接 如果 连的线最后闭合会提示是否闭合,闭合方可转换为可编辑...

  • Css3 - transform(变形)

    一.2D转换 二.3D转换

  • day22-CSS-3D转换模块

    3D转换模块 2D和3D的区别 坐标系:2D:xy轴--平面 3D:xyz轴--立体 默认情况下所有的元素都是2D...

  • CSS3动画

    CSS3之2D/3D动画 2D的变换3D的变换动画 2D动画的变换 基本说明 注意:一般要写不同浏览器的适配 移动...

  • 2019-06-11

    CSS3 2d变换 3d变换 css3 2d变换 111111 222222

  • OpenGL ES基础概念

    使用这个简洁、高效的OpenGL子集创建3D和2D图形效果。 OpenGL ES为硬件加速的2D和3D图形渲染提供...

  • Substance Painter常用快捷键

    视图 ▶放大视图:Tab键 ▶ F1:3D与2D显示视图 ▶ F2:3D视图 ▶ F3:2D视图 笔刷相关 ▶笔刷...

网友评论

      本文标题:3d TO 2d

      本文链接:https://www.haomeiwen.com/subject/ckzzxctx.html