D45_摄像机组件Camera

目录

1.摄像机组件

1.Clear Flags_清除目标

1.SkyBox_天空盒子

2.Solid Color_单色填充

3.Depth only_仅深度填充

4.Dont Clear_不清理原来的游戏物体

2.Background_背景色

3.Culling Mask_裁剪遮罩

 4.Projection_投射方式

1.Perspective_透视相机

2.Orthographic_正交相机

5.Clipping Planes_相机视野的远近

6.Viewport Rect_视窗的位置和大小

7.Rect_深度

8.Target Texture_指定将一个相机渲染的内容渲染在一个Rander Texture上面


1.摄像机组件

1.Clear Flags_清除目标

没有需要渲染游戏物体的位置需要用什么来填充

1.SkyBox_天空盒子

我们需要建一个材质球,在Standard上选择Skybox/6 Sided

 然后将找到的天空盒子的图片拖到这六个面中(六张图片我拖得都是一样的,主要是为了看出来天空盒子的效果)

 

 最后将这个材质球直接拖拽到场景中,就形成了这种效果 (如果是专业的天空盒子照片应该是没有缝隙的连续的天空)

还原的方法在这里

2.Solid Color_单色填充

3.Depth only_仅深度填充

可以叠加不同深度相机渲染内容(如果两个相机渲染的内容在屏幕的同一位置,深度值大的会覆盖掉深度值小的内容)

这个就是深度值,下面会详细介绍(详情看7.Rect_深度

4.Dont Clear_不清理原来的游戏物体

此时场景中只有一个游戏物体,相机是选择了 Dont Clear的模式的,现在运行起来,让我们看一下会发生什么

 这是拖动物体运动之后的场景

2.Background_背景色

3.Culling Mask_裁剪遮罩

 控制相机渲染某些层的游戏物体

在我们的Unity中,每个游戏物体都会有一个层级Default

 这个层级类似于标签,可以自己添加名字,但是不同于标签的是,层级最多只能添加32个

返回相机中打开Culling Mask可以看到所有设置的层级 

 选中即为摄像机可以看到这个层级的游戏物体,取消选中则看不到这个层级的游戏物体

代码中我们应该怎样设置

每个层级前都有一个标号,从0到31,2的n次方(n代表层级前的标号)代码中我们利用左移运算符来实现勾选的操作,如下

 4.Projection_投射方式

1.Perspective_透视相机

效果:近大远小

 可以看到相机的视野范围像一个锥形,但是我们放大来看

 还是有横截面的,因为我们的相机最后在我们眼前的是一个平面,所以即使设置到最小也是一个平面,如果是0的话就成了一个点了,也没有所谓的平面视觉了

2.Orthographic_正交相机

没有近大远小的效果,他展示出来的是一个矩形视野区域,如下

5.Clipping Planes_相机视野的远近

6.Viewport Rect_视窗的位置和大小

x y w h 表示的都是比例  从0 到 1  调整后可以在我们的Game视图里面看到

x y 为坐标  参考坐标为屏幕坐标,左下角是(0,0)

w h 是大小

7.Rect_深度

相机的深度在场景中存在多个相机的时候会用到,深度值越大,显示的越靠前

例如小地图,我们可以把小地图的深度值设置的比场景相机大,这样小地图便可以存在于场景相机视图前面

Main Camera:Viewport Rect:    X: 1     Y: 1     W: 1     H: 1             Depth:1

Camera:Viewport Rect:    X:0.5    Y:0.5    W:0.5    H:0.5             Depth:2

8.Target Texture_指定将一个相机渲染的内容渲染在一个Rander Texture上面

这个功能可以实现将镜头看到的画面投射到游戏物体身上,例如:电视机,镜子,UI界面的模型展示等

首先创建一个Rander Texture 

在相机身上找到Target Texture,将Rander Texture拖入

再创建一个材质球,将材质球上的Shader设置为Unlit/Texture(去除光照对图片的影响)

然后把Rander Texture 拖到材质球上

 最后将这个材质球拖入游戏物体身上,现在这个游戏物体就可以展示镜头效果了

 

void MainWindow::on_pushButton_clicked() { mlabel mlabel1; //读取raw FILE* fp = fopen("E:\\QTprogram\\ImageProcess001\\Rad Image1.raw","rb");//读取图片 unsigned int size = width * hight; ushort* raw_data = (unsigned short*)calloc(size,sizeof (unsigned short)); fread(raw_data,sizeof (unsigned short),size,fp);//读取图像内部数据 free(fp); QImage img(width,hight,QImage::Format_Grayscale16);//转换图像 // for(int i=0;i<width;i++) // { // for(int j=0;j<hight;j++) // { // uint pixelval = raw_data[i+j*width]; // QRgb color = qRgb(pixelval, pixelval, pixelval); // img.setPixel(i,j, color); // } // } uint P1= 0,P2= 0,P3= 0,P4= 0,Pc= 0,P5= 0,P6= 0,P7= 0,P8 = 0; // uint Dh1= 0,Dh2= 0,Dh3= 0; // uint Dv1= 0,Dv2= 0,Dv3= 0; // uint D45_1= 0,D45_2= 0,D45_3= 0; // uint D135_1= 0,D135_2= 0,D135_3= 0; // uint Ary[]={}; QVector<QVector<uint>>Raw_Pixelval; QVector<QVector<uint>>Prc_Pixelval; // int &pRPixelval; for (int i=0;i<width;i++)//获取原始像素灰度值 { for(int j=0;j<hight;j++) { uint pixelval = raw_data[i+j*width]; Raw_Pixelval[i][j] = pixelval; } } for (int i=0;i<width;i++) { for(int j=0;j<hight;j++) { P1 = Raw_Pixelval[i-1][j-1]; P2 = Raw_Pixelval[i-1][j]; P3 = Raw_Pixelval[i-1][j+1]; P4 = Raw_Pixelval[i][j-1]; Pc = Raw_Pixelval[i][j]; P5 = Raw_Pixelval[i][j+1]; P6 = Raw_Pixelval[i+1][j-1]; P7 = Raw_Pixelval[i+1][j]; P8 = Raw_Pixelval[i+1][j+1]; uint Radio_c9[9]={P1,P2,P3,P4,Pc,P5,P6,P7,P8}; uint median_Dh = mlabel1.median(Radio_c9,3); Prc_Pixelval[i][j] = median_Dh; // uint MaxRadio_c9 = mlabel1.MAX(Radio_c9); // uint MinRadio_c9 = mlabel1.MIN(Radio_c9); } } for (int i=0;i<width;i++) { for(int j=0;j<hight;j++) { uint pixelval = Prc_Pixelval[i][j]; QRgb color = qRgb(pixelval, pixelval, pixelval); img.setPixel(i,j, color); } } QPixmap px = QPixmap::fromImage(img); free(raw_data); label->setPixmap(px); label->show(); }
06-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值