引言
3D是ssRender引擎1.5版本所新增的特性,可以帮助大家快速上手理解ssRender 3D功能,包括3D节点的创建、各个属性详解、外部模型的导入,3D节点的缩放、3D视角的转换等等。。。之前也写过一篇关于2D仪表开发教程(ssRender1.4.5版本使用理解),若对本篇文章感兴趣,想了解的同学,也可以看看本人之前写过的这篇文章(快速跳转)
一:3D节点详解
首先我们要在工程项目的Page下创建Layer节点,Layer节点下创建Scene场景节点,Scene场景节点使我们实现3D功能的重要依托节点,下面将会详细介绍Scene节点及其子节点各个功能及属性(通用属性部分在上一篇文章有过详细介绍,以下不再赘述)
(一)Scene节点:
1.FPS属性,控制了Scene节点内部其他节点的每秒刷新帧数,可以在多个3D场景下,设置不同场景的刷新率,将没有动画效果的或是不重要的3D场景设置低刷新率,能够有效提高整体画面的流畅程度以及渲染效率。
2.MSAA属性(Multisample Anti-Aliasing 多重采样抗锯齿):可以对多个采样点的颜色进行混合,以达到消除锯齿的目的,最小值为0,最大值为32,默认值为4,当值越大时抗锯齿效果越明显
选中Scene节点下的任意节点,再点击右侧的小摄像头按钮(如上图),即可进入3D场景的预览编辑界面(如下图),可在编辑界面选中其他节点、拖拽改变节点位置
说明:
如图,其中红色坐标轴代表X轴,绿色坐标轴代表Y轴,蓝色坐标轴代表Z轴
(二)Camera节点:
Camera节点是创建Scene节点时自动创建的节点,无法被删除,同Scene节点销毁时自动删除。
Camera节点在3D预览编辑界面是以小相机的模型出现,它代表着观察视角,模拟人眼观察到3D场景的情形,可以通过改变Camera的大小、位置、视角等属性来改变3D元素在Scene场景中的显示效果。
如上图所示
1.FOV属性(Field of View视野):最小值0,最大值180,默认值90,数值越大代表视野离3D模型越近,当值为180时,模型几乎不可见
2.Z_Near:Camera到物体最近平面的距离。最小值0,最大值1000,默认值1。值为0时,不显示Camer能见的物体,即不显示3D模型;大于等于1,显示Camera能见的模型,即显示3D模型;大于41.00,不显示3D模型。
3.Z_Far:Camera到物体最远平面的距离。最小值500,最大值1000,默认值500。
4.LookAt_X、LookAt_Y、LookAt_Z:视角转动角度,根据不同坐标轴进行仰视俯视转换
5.P_X、P_Y、P_Z(Position of 坐标轴):Camera在不同坐标轴的实际位置。范围:-65535.00~65535.00。精度,0.01,默认值如上图所示。
6.R_X、R_Y、R_Z(Rotation of 坐标轴):Camera绕不同坐标轴旋转角度,范围同上,默认值如图。
(三)Light节点
Light节点同Camera节点,是创建Scene节点时自动创建的节点,无法被删除,同Scene节点销毁时自动删除。
Light光源节点,在3D场景的预览编辑界面,鼠标点击不同坐标轴可以进行拖拽,改变Light的P_X、P_Y、P_Z属性
Intensity属性控制发光强度,Color控制灯光颜色,3D模型反射光的颜色也会跟着Light的Color进行变化(如下图)。
(四)Node节点
Node节点同Item节点类似,但是并没有实际效果展示,在3D场景下,与在2D场景中的Item部分效果类似。Node节点时Scene节点下允许自行创建的节点,用于组织场景的结构,可以挂载其他节点作为容器节点。(如图)
(五)Mesh节点
Mesh节点是3D模型的基本元素。通常情况下,Mesh节点用于表示具体的3D模型对象,例如汽车、人物、建筑等。每个Mesh节点都可以拥有自己的材质,以定义模型的外观和表面特性。
那么我们如何导入3D模型呢?
首先在模型页面点击新增模型,添加提前准本好的.obj文件。
右键Layer节点新增Mesh节点
点击file按钮,在本工程对应的文件目录下找到Model文件夹添加file
就能将目标3D模型导入到场景中啦!
然后,选中3D模型所在的Mesh节点,再点击Source添加纹理图片:
当当当当!一个有纹理的3D模型就加载到我们的3D场景中了!
在适当调整Camera和Light的位置与角度,就能得到最终效果啦:
(六)Cube节点
Cube节点是一个具有六个相等正方形面的规则正方体,可在Scene节点下手动创建。
如图,新建的Cube节点(更改了Color属性为黑灰色)
将材质窗口中的SSR_CubeMap材质拖拽到刚刚新建的Cube节点上,就能设计Cube节点的纹理显示效果了
选择合适的纹理贴图,放在ssBaseTexture属性中(用于控制Cube正方体的所有面的基础纹理)
就能得到一个带有纹理的正方体啦(如下图)
而SSR_CubeMap内置的其他属性Cube_right、Cube_left、Cube_top、Cube_bottom、Cube_front和Cube_back分别控制正方体的右边、左边、顶部、底部、前方及后方的侧面贴图材质。
(Tips)
ssRender引擎内置了四种不同的材质:SSR_Base3D,SSR_PBR,SSR_CarPaint和SSR_CubeMap。四种材质各有不同:
SSR_Base3D一般在无光照干扰情况下使用(Light的参数不会影响此材质),支持工具自带的材质颜色与目标纹理贴图相融合。
SSR_PBR(PBR——Physically Based Rendering)基于物理渲染的材质系统,用于模拟现实中的材质。提供粗糙度、金属度、反射率、环境光遮挡等具有物理意义的材质参数来控制渲染效果。
车身材质一般会使用SSR_CarPaint,因为它可以更好地模拟亮面车漆的材质,以及外观展示。同时还能根据环境光展示光反射、光折射及光吸收的逼真效果。
SSR_CubeMap用于立方体贴图来捕捉环境的反射,包括周围物体和景观的反射信息。通过将这些反射信息应用到物体表面,可以增强渲染结果的真实感和逼真度。
(七)Billboard节点
Billboard节点是一个面向摄像机的平面几何体。用于模拟在三维场景中的二维对象。Billboard节点始终面向相机,因此无论相机如何移动,它都会始终保持朝向相机。
下面来一个小例子,就能让很好的理解:
看上图,将加载了灌木纹理的Billboard显示在3D场景中,无论我们怎样拖动视角,灌木丛的正面总会朝向我们。
在加载纵轴(R_Y)绑定后,让Billboard实现自旋转效果时,发现灌木丛的视角同样不会改变!
下面我们通过几个小例子来快速掌握3D节点的使用:
二:3D节点应用
(一)视角变换的摩托
首先将我们准备的摩托车3D模型载入到模型资源窗口下
通过设置摩托车模型的S_X,S_Y,S_Z,将它在3D场景下的大小调成与Camera大小一致(不强求,近大远小,比例适中即可)(效果如下图)
此时,我们可以令此Node节点的R_Y属性自增,就可以达到让摩托车原地旋转的效果(如下图)
再新建一个plane节点,拖拽纹理资源到plane节点的Source属性上,模拟信号(效果如下图)
设置Timer(第一篇文章有讲过Timer的用法):每秒显隐一次(效果如下图)
设置属性,通过不同的属性值与相机Camera的位置、角度、视角等参数进行binding绑定,切换属性值时就能完成从平视,到后视,再到远视的效果啦!(如下图)
(二)绕着星球飞行的火箭
第二个小实例也很简单
同第一个实例,我们要引入星球和火箭的Model,再将白色的线权纹理拖拽到plane上
得到效果如下
注意层级关系,更改plane的大小和火箭的P_X值,让火箭落在白色线圈上。
通过自增火箭节点的上一层Node节点的R_Y属性,即可实现火箭围绕星球旋转效果。
再自增星球所在节点的R_y属性,即可实现星球的自转效果(如下图):
同第一个实例,设置属性值进行binding,可以实现切换视角效果(如下图):
小结:本篇文章是本人在使用ssRenderEdit工具中的Scene 3D节点内容时的学习理解,并且实现了两个简单的小例子,接下来本人会继续分享对ssRender引擎其他的学习理解,并且会继续深度探索ssRenderEdit工具其他实用功能!若是感兴趣,还请持续关注哦!