摄像机的使用
程序员文章站
2022-03-26 17:23:14
...
1)笔记
1)摄像机的模式与成像的基本原理
(1)在底层OpenGL的设置里面,我们并没有什么摄像机的概念,
OpenGl是根据摄像机节点得到--》视角--》世界坐标--》摄像机坐标--》变换矩阵;
(2)呈像原理:
虽然是3D物体,其实呈像出来,依然是2D画面;
呈像的概念:将3D物体-->2D影像
(3)2种呈像模式
透视成像(原理:相似三角形成比例,远小近大):
摄像机 屏幕 一些点
长方形就是当前屏幕的比例
投影的法则:
已知3D坐标(x,y,z)-->z投影,
已知屏幕到摄像机的距离,将3D点转化为像点,求解(x投影,Y投影),
Y投影/坐标Y = Z投影/坐标Z --> y投影 = y * z投影/z
投影之后都在一个平面上了,这样我们就把3维的点做成了2D平面中的像点
一般3D游戏的成像都采用透视成像,远小 近大
投影过程是:
从摄像机这里拉出来一条直线,与3D坐标连成线,与*面相交焦点,这个点就是3D的像点,
我们就按照这一种方式把3D的点都转化为像点,这样就把3D的坐标点转化为了Z投影的这个平面上来了,
所有的像点都是一致的
正交成像(原理:所有的点xy都不变,直接z变换,没有远小近大的特点):
很简单,是立方体的模式,像点直接就过来了;
原来的X是多少 就得到多少,远处、近处物体都一样大,一般我们在2D里面使用;
一些特殊的3D也需要;
2)creator 3D摄像机组件的常用参数:
(1)摄像机节点(位置旋转缩放-->世界坐标到我们的摄像机坐标下的变换矩阵) + 摄像机组件实例(定义了成像模式和相关参数-->用于投影)
(2)cc.CameraComponent常用参数:
ClearFlags:清理屏幕-->每次绘制的时候,把屏幕底色刷一下,打底的颜色
DNT_CLEAR: 不清理,原来有什么就是什么,直接绘制摄像机拍摄成像的画面到屏幕上
SOLID_COLOR: 颜色填充
SKYBOX: 天空盒-->是一种资源,就像天空在这里
COLOR: 清理屏幕的颜色
Depth:
FAR: 你的视野是有限的,你最远可以看到的距离
NEAR:你的视野最近看到多少,这样局得到一个有限范围内的视角锥
FOV:视野的视角,决定视野的开口
Priority: 摄像机的Priority,我们的世界,可以同时放多个摄像机,就像NBA转播一样,只有一个屏幕画面,多份拍摄,哪个摄像机先绘制,
哪个摄像机后绘制呢? 越小越先绘制
再拖一个摄像机:发现第一个摄像机拍摄的没了,这时因为摄像机ClearFlags有个清屏的操作,选择DNT_CLEAR,则出来2个画面
A Priorith 1 、B Proority 0,这样B先绘制,A再绘制时,把屏幕清理掉了,有个蓝色挡在这里
A NOT_CLEAR 、B SOLID 这样就都绘制出来了
Projection: 透视摄像机 或者 正交摄像机
Rect: 小的直播;
看另外人的视角,你的伙伴在干嘛干嘛
TargetTexture: 可以将画面绘制到一张图片上,可以用于抓屏幕,实现截图功能
Visibility: 可视化哪一些物体--》哪些物体可以被摄像机拍摄 和 `节点的Layer` 中指定相关,想拍射谁就指向谁
层次 `或`运算 而来: 1 << 7 | 1 << 6
3)第三人称摄像机(王者荣耀):
摄像机跟着角色走,但是拍摄的角度不变,你可以去打怪,但是摄像机始终对准屏幕正*;
主角移动,摄像机移动,但是不会因为脸的朝向而打到别的方向上去,不会改变摄像机的视野;
别人在看你;
如:RPG、ARPG游戏砍怪、王者荣耀、跑酷类游戏、贪吃蛇大作战等
第一人称摄像机(拇指射箭):
我们的摄像机会随着摄像机的朝向而变化,角色转到哪个地方,那么视野将会转到哪个地方, 摄像机安到自己的双眼上,鼠标移动了指向则不一样;
摄像机是主角的眼睛,你在看世界;
如:cs、守望先锋、赛车游戏、拇指射箭游戏
4)所有的物体,你要想看得见,必须在摄像机的范围之内
上一篇: 初识cocos creator 3d
下一篇: 打造3D路径编辑系统