当前位置:网站首页>Personal notes of graphics (3)
Personal notes of graphics (3)
2022-07-07 16:30:00 【qq_ fifty-seven million two hundred and fifty-one thousand thre】
View transformation :
The main purpose of learning transformation is to turn a three-dimensional object into a two-dimensional picture
How to take photos (1. Put the model in place 2. Put the camera away 3. Taking pictures )

(MVP Transformation )
//----------------------------------------------------------------------------------------------------//
Change of perspective :
There are two ways 1. Construct a matrix from world space to observation space 2. Pan the entire viewing space , Place the camera at the origin , At this time, the coordinates of the object are the relative positions in the observation space Here we take the second approach
ps: The camera and the object it sees move relative
pps: The purpose of camera transformation is to get the relative positions of all visible objects and cameras , How to get ? A very intuitive step , We move the object with the camera ( The matrix obtained by restoring the camera to the origin is multiplied by the model ), If you can put the coordinate axis of the camera ( Assuming that u,v,w Respectively corresponding to x,y,z) Move to standard x,y,z Axis , Then the coordinates of the object at this time are not naturally relative coordinates !
Essentially, the operation is divided into two steps ,1. Move to origin ,2. Rotate the axis of the camera to xyz Axis
![]()
There are some things that need to be said :
In the observation space , The camera is at the origin , Observe the coordinate axis of space +x Point to the right ,
+y Above ,+z In the rear
First step : Establish the camera coordinate system


The second step : After successfully establishing the camera coordinate system , How to move it to the original world coordinate system ?

( Note that this is not a linear transformation before translation But first translation and then linear transformation )
( Rotating an arbitrary axis to a normalized axis is not easy to write , But the reverse is easy to write , such as X Axis (1,0,0) Rotating to a certain axis is easy to write )
![]()
Here the teacher directly wrote such an inverse matrix ( The derivation process can be seen by yourself ), Suppose you give a vector (1,0,0,0) Multiply by this matrix and you will get 
It's exactly the same ![]()


( The matrix of the origin transformation camera is derived directly above , So directly invert this matrix to get the last matrix we need )
Tips : Inside the spin , The inverse matrix of rotation is equal to that of rotation matrix 【 Transposition 】

pps( Finally applied to objects )
//----------------------------------------------------------------------------------------------------//
Projection transformation :
( The second picture is perspective The first picture is orthogonal )

The size of near big far small and near far are the same

Orthographic projection :
Put the camera at the origin here , the -z Look in the direction , The upward direction of the camera is y, At this time z Throw it away and get an orthogonal image

Throw away z after All objects are x and y In the plane , It doesn't matter at this time x and y How big is the plane formed , We all map him to -1 To 1 In the cube of
![]()
( The purpose of mapping is to prepare for the next step of rasterization )
For orthogonal projection , Will turn any shape into such a standard body , The operation steps are as follows
1. First move to the origin 2. Zoom all the points ( shrinkage )

x Left and right on the axis (l r)
y Up and down on the shaft (b t)
z Far and near on the axis (f n)
![]()
for instance
The rightmost matrix represents l r Move the midpoint of to the origin
The matrix next to represents mapping to x On the shaft And the left and right add up to 2
2. Perspective projection :
Parallel lines are not parallel

The following is an example of multiplying any point by any number , The final point is the original point ( Divided by w Remember that nature ?) Taking what is not taking Let's take a z

The difference between orthographic projection and perspective projection Both far and near But the extended lines are inconsistent ( Parallel not parallel )

The perspective projection can be split in two :
1. First squeeze the perspective projection ( Compress ) Form a cube like a near plane ( The near plane remains unchanged ,z No change , The center does not change )
2. Then do orthogonal projection ( Move first And then compress it into -1 To 1 The cube )
First step , extrusion ( hold y Squeeze to y')

Similar triangle rule The distance between the near plane and the far plane == The height of the near plane is higher than that of the far plane

Empathy ,x I know

At this point, we squeeze the matrix x and y I have got it however z Still don't know

It is also known that the result of multiplying a point by a constant is still equal to this point Then let's multiply by z

So the final equation is equal to

Some point (xyz1) Dot multiplying a matrix must be equal to the above matrix So we can guess some numbers ( first line :x*n)

Now that's all Z I don't know. , But we summarized the rules :
1. No point changes in the near plane
2. Far plane z No change
So according to the law of the near plane, we can get


So according to the law of the far plane ( The center of the far plane (00f) It is the same. ) You can get

So finally :

Then do the orthogonal projection to get the perspective projection
//----------------------------------------------------------------------------------------------------//
When you know a vector , And obtain a transformation matrix ( translation , rotate , Zoom or operate together, etc ) when ,
Multiplication represents the corresponding transformation of this vector ( translation , rotate , Zoom or operate together, etc )
1. Transformation from model space to world space : According to the model Transfrom Find the transformation matrix with world space
2. Transform vertices from world space to observation space ( Camera space , Not two-dimensional space ): Similarly, according to the camera Transfrom Find the transformation matrix between camera space and world space ( We need to pay attention to The camera space uses the right-hand coordinate system , So the matrix should be right z The component is reversed )
3. From observation space to clipping space : Involves two projections ( Orthographic projection , Perspective projection Perspective has the law of near big and far small , Orthogonality is the same size far and near ),
边栏推荐
- Lecturer solicitation order | Apache seatunnel (cultivating) meetup sharing guests are in hot Recruitment!
- How to implement backspace in shell
- Regular expression string
- MySQL数据库基本操作-DQL-基本查询
- Notification uses full resolution
- [excelexport], Excel to Lua, JSON, XML development tool
- Prediction - Grey Prediction
- Logback logging framework third-party jar package is available for free
- 23. 合并K个升序链表-c语言
- logback.xml配置不同级别日志,设置彩色输出
猜你喜欢

Description of vs common shortcut keys

删除 console 语句引发的惨案

torch.numel作用

Lecturer solicitation order | Apache seatunnel (cultivating) meetup sharing guests are in hot Recruitment!

1亿单身男女“在线相亲”,撑起130亿IPO

SysOM 案例解析:消失的内存都去哪了 !| 龙蜥技术

【Vulnhub靶场】THALES:1

Rongyun won the 2022 China Xinchuang digital office portal excellence product award!

"The" "PIP" "entry cannot be recognized as the name of a cmdlet, function, script file, or runnable program."

What are compiled languages and interpreted languages?
随机推荐
Application example of infinite list [uigridview]
Common training data set formats for target tracking
Step by step monitoring platform ZABBIX
Unity3D_ Class fishing project, control the distance between collision walls to adapt to different models
laravel构造函数和中间件执行顺序问题
MySQL数据库基本操作-DQL-基本查询
SysOM 案例解析:消失的内存都去哪了 !| 龙蜥技术
Tragedy caused by deleting the console statement
What else can an ordinary person do besides working in a factory to make money?
23. 合并K个升序链表-c语言
Detailed explanation of several ideas for implementing timed tasks in PHP
Introduction to ThinkPHP URL routing
应用程序和matlab的通信方式
Spark Tuning (III): persistence reduces secondary queries
logback. XML configure logs of different levels and set color output
Logback日志框架第三方jar包 免费获取
Multiplication in pytorch: mul (), multiply (), matmul (), mm (), MV (), dot ()
Continuous creation depends on it!
URL和URI的关系
Logback logging framework third-party jar package is available for free