代码编织梦想

3D透视:最简单易懂的成像原理及实现教程

写在前面

这篇文章已经构思很久了,一直不知道该如何下笔,就寻思着写了再说。由于本人英语不怎么好,有些变量命名会比较随意。如果这篇博客有什么错误,请指正,感谢。

原理介绍

3D透视图说到底是模拟人眼成像。将人眼作为视点O,以视点为三维坐标系的原点,过原点做一条射线,这条射线称为视线,过视线做一个垂直视线的平面,称为视平面P,P与视线的交点称为C,且OC长度已知,称为视距。从O做射线过P的四个顶点在空间中形成一个四棱锥,P以下的部分形成一个棱台,位于这个棱台内的点与O连线,这条线段与P的交点M即使人眼中点A所成的像。如下图所示。

在这里插入图片描述

一般模型

三维坐标系中一条过原点的射线可以通过它与平面ZOY、平面ZOX的成角来确定,与平面ZOY的成角我称为ha,与平面ZOX的成角我称为va
一般模型的特殊情况是视线的va、ha均为0时候。

计算一般模型时直线OA在P上的点坐标

  1. 做A(ax, ay, az)在Z轴上的垂线与Z轴交于点N,计算这条垂线的长度:AN = sqr(ax ^ 2 + ay ^ 2)
  2. 计算ON的长度:因为N在Z轴上所以ON = abs(az)
  3. 做M垂直于Z轴于V,求MV的长度:因为三角形ONA于三角形OVM相似,所以VM与AN成比例,既:MV = AN / ON * OC
  4. 求mx:mx = ax / AN* MV
  5. 求my:my = ay / AN* MV
  6. 求mz:在一般模型中mz并不是那么重要——毕竟P上的点的z坐标都等于OC
  7. 将点绘制在屏幕上,这不难理解。P是和XOY平面平行的,所以可以直接用点M的坐标来绘制。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a2632699773/article/details/89259521

3d成像原理_wu_qz的博客-爱代码爱编程

(一)什么是3D  3D是相对于2D平面的一个概念。我们人类所生存的世界就是一个三维的空间,我们在现实世界中观察到的物体也都具有三个维度:高度、宽度、深度。我们早已习惯了3D的世界。然而由于技术发展的局限性,在电影、广播电

三维动画原理---3.透视图(1)_flashsmile的博客-爱代码爱编程

一.概述 在表示三维图形时,有三种方法 1.透明线框法:忽视了表面,将后面的线都表示出来; 2.隐藏线框法:将后面的线隐藏起来,可是没有面的详细信息; 3.阴影面透视法:克服上面两种的缺点,有面的详细信息,可是速度受到影响。 一个三维图形有六个部分构成: 1.几何体 2.照相机(用于设置观察点) 3.灯光 4.表面特性 5.投影算法 6.透视算法 二.

入门图形学:透明原理_羊羊2035的博客-爱代码爱编程_png透明图片原理

     因为我们后面要大量使用透明效果(或者说透明效果是实现我们需要的着色特效的基础部分),所以这里就来非常通俗详细说一下透明的原理。      先来从最简单易懂的二维层面来讲解。      我猜大家使用最常见的透明效果就是在ui中使用.png(带有透明通道)的sprite吧,我们在ps中通过背景透明的模板文件制作保存的.png图片就是这个了,.pn

3d成像方法 汇总(原理解析)--- 双目视觉、激光三角、结构光、tof、光场、全息_路人甲ing..的博客-爱代码爱编程_三角成像原理

  3D成像方法汇总介绍: 这里要介绍的是真正的3D成像,得到物体三维的图形,是立体的图像。 而不是利用人眼视觉差异的特点,错误感知到的假三维信息。   原理上分类:主要常用有: 1、双目立体视觉法(Stereo Vision) 2、激光三角法(Laser triangulation) 3、结构光3D成像(Structured light

三维模型逐渐透明化-爱代码爱编程

需求: 需要三维模型逐渐透明化消失,如果模型是一个整体,那通过更改材质为RenderingMode为Transparent后调节颜色通道即可,如下图所示。但是如果模型有多个部分组成,则显示会有问题(可能是目前所有三维软件的共

用CSS3实现酷炫的3D旋转透视-爱代码爱编程

3D动画效果现在越来越普及,已经被广泛的应用到了各个平台,比如阿里云,华为云,webpack官网等。它可以更接近于真实的展示我们的产品和介绍,带来极强的视觉冲击感。所以说,为了让自己更加优秀,css3 3D动画必不可少。 你将学到 CSS3 3D 转换的常用API介绍CSS3 3D 应用场景CSS3 3D 实现一个立方体开始 1.CSS3 3D

canvas投影-爱代码爱编程

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <

三维透视-爱代码爱编程

使用PlaneProjection类能够实现在二维平面上产生类似于三维视觉的效果,主要是通过在X、Y、Z三个坐标轴上应用平移或者旋转变换来完成透视处理的。 在运行PlaneProjection类之前,应当简单了解一下透视变换的坐标系结构。假设用户正对着设备屏幕,那么,屏幕上水平方向为X轴,向右延伸为正方向,向左则为负方向;屏幕竖直方向为Y轴,正方向朝上,

matlab图像部分透明,MATLAB在三维坐标中显示图片 并 使得图片部分透明-爱代码爱编程

要画一个光路图,本来可以用proe,但是鼠标不好用,有些操作也忘了,用MATLAB画了个。下面是用到的图片。 但是三维坐标中显示彩色图片的目标没有搞定,做了个灰度图,然后用仿射程序将彩色图片贴到了二维灰度图中。 clear all;clc;close all; im1 = rgb2gray(imread('F:\sup.jpg'));

结构光3D成像原理及应用-爱代码爱编程

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 之前给大家介绍了TOF 与双目结构光的对比,那在深度相机的应用方案种还有结构光的摄像方案。今天小编就跟大家来聊一聊结构光,顺便也捋一捋这三者的对比。 结构光 结构光技术就是使用提前设计好的具有特殊结构的图案(比如离散光斑、条纹光、编码结构光等),然后将图案投影到