Godot-3D教程-01.介绍3D

创建一个3D游戏将是个挑战,额外增加的Z坐标将使许多用于2D游戏的通用技术不再有用。为了帮助变换(transition),值得一提的是Godot将使用十分相似的API用于2D和3D。

目前许多节点是公用的在2D与3D版本中。值得查阅3D平台教程或者3D运动学角色教程几乎是与2D是相对应的。

在3D世界中,数学相较2D有一些复杂,所以在wiki查阅相关的向量数学(Vector math)将是对开发3D游戏非常有用的。

空间节点 Spatial node

2D节点(Node2D)是2d基础节点.控件( Control)是GUI中所有一切的基础节点. 如此,在3D引擎中将把空间(Spatial)做为所有3D物件的节点。

../../_images/tuto_3d1.png

空间节点(Spatial nodes)相对于父节点(既有父节点也是继承与空间(Spatial)类型)是有自己的局部变换。这种变换(transform)近似于一个4x3 Transform,或者使用3个三维向量( Vector3)代表空间位置,欧拉旋转 (x,y与z 角度)和缩放大小.

../../_images/tuto_3d2.png

3D内容 3D content

不像2D那样直接加载图片内容再直接绘制出来,3D将有一些难. 这些内容必须用空间三维工具(通常是DCCs)进行创建并且导出为一些指定文件格式才能导入进Godot中(3D格式并不类似于标准的图片)。

DCC 创建模型 DCC-created models

这儿有2种把3D模型导入Godot渠道。第一种通常是直接导入3D场景(Importing 3D Scenes),这种方式允许导入所有场景物件 (就像在DCC中看到的那样),包括动画,骨架,各种模型等等.

第二种是使用文档3D网格模型doc_importing_3d_meshes导入.这种方式可以使用简单的 .OBJ 文件做为网格模型的资源,可以把资源放入一个网格模型实例(MeshInstance)节点 就可以显示出来。

基本几何形状 Generated geometry

可以直接使用网格模型(Mesh)来创建自定义的几何形状,使用Mesh.add_surface()函数来创建你自己的数组。你可以找到SurfaceTool帮助类,它提供了帮助索引,生成法线,切线等一系列API。

如此,把这个可用于生成静态几何形状(不经常更新的),创建顶点数组的方法加入3D API是有益处的。

立即几何形状 Immediate geometry

为了应付经常变化的基本几何形状需求,Godot提供了一个特别的节点立即几何形状(ImmediateGeometry),它提供了一个基于OpenGL 1.x  立即模式(immediate-mode)的 API 来创建点,线,三角形等。

2D在3D 2D in 3D

Godot中包含一个强有力的2D引擎,有许多的游戏在3D环境中使用了2D。使用了固定并且不旋转的摄像机(camera) (不管是正交或者透视) ,像Sprite3D 与 AnimatedSprite3D这样的节点在创造以3D为背景的2D游戏中将有许多的优势,比如真实的视角,光阴 特效等等。

当然,缺点也是显而易见的,与普通2d相比,增加了复杂性和性能同时也下降了,并且不像在以像素为单位那样容易上手。

环境 Environment

除了可以编辑场景,环境编辑通常也是必须的。Godot提供了一个世界环境(WorldEnvironment)节点,可以改变背景颜色,模式(如天空盒),并且提供了一系列的内置的后处理特效类型。 环境同样可以在摄像机(Camera)中重写。

3D视图 3D viewport

3D场景编辑在3D选项卡。这个选项卡可以手动选择,也会在你选择空间节点(Spatial node)的时候自动的切换。

../../_images/tuto_3d3.png

默认的3D场景导航界面样式类似于Blender(斑斓3D软件),在编辑器设置中,像其他设置一样,这些定制鼠标按钮等行为都是可以自定义的: 

../../_images/tuto_3d4.png

坐标系 Coordinate system

Godot 使用的是公制(metric) 系统来衡量一切。3D物理与其他领域对此都进行了调整,所以尝试不同的比例通常是不明智的(除非你知道你在做什么)。

当使用3D资源时,最好以正确的比例(将DCC设置为公制)开发。 Godot允许缩放后导入,而这种方法在大多数情况下有效,在少数的情况下,它可能在诸如渲染或物理等精细区域导致浮点精度问题(诸如毛发) 所以,你要确保你的美术使用了正确的比例绘制 !

Y坐标用于表示“上”,尽管许多对象需要对齐(像 灯光,摄像机,胶囊碰撞体,车辆等),Z坐标用于表示“朝向”方位。粗略的定义为如下:

  •  表示  左右
  • Y  表示 上下
  • Z  表示  前后

空间和操作装置 Space and manipulation gizmos

通过操纵小方块可以在3D视图中移动对象。每个坐标都用一种颜色代表:红,绿,蓝分别代表着 X,Y,Z 。这个同样也约束这网格和其他小方块 (同样用于语言着色器,排列三维向量组件,颜色,等待)。

../../_images/tuto_3d5.png

一些有用的快捷键:

  • 在移动和缩放,旋转中按S键截断运动和旋转。
  • 按F建可以转到选择物体的中心。

视图菜单 View menu

可以使用“[ view ]”菜单来控制视图选项。请多注意这些窗口上的小菜单,它们常常会忽视!

../../_images/tuto_3d6.png

默认环境 Default environment

从项目管理界面创建新项目时,3D环境有一个默认的天空盒。

../../_images/tuto_3d8.png

考虑到物理是基于渲染工作。为了提供对象的间接反射光照,我们建议使用默认环境来开发。

摄像机 Cameras

除非场景中放置了摄像机(Camera),否则无论在三维空间中有多少物体都将不会显示出来。摄像机机可以设置为正交投影或者透视投影:

../../_images/tuto_3d10.png

摄像机是互相关联的并且仅显示在父视图或者父父级视图。从场景树中root节点一下有一个视图,其下摄像机将被设置为默认摄像机除非还有添加了其他子视图  (无论做为渲染对象或者画中画) ,这些视图需要自己下面有子摄像机才能显示。

../../_images/tuto_3d11.png

在处理多个摄像机时,每个视图遵循以下规则:

  • 如果场景数中暂时没有摄像机,那么第一个添加的摄像机将会是激活状态。 其他被加入场景中的摄像机将被忽视(除非被设置为当前摄像机)。
  • 如果摄像机设置了“current” 属性,不管场景中有多少其他摄像机只有它会被使用。如果这个属性设置了,它就会处于激活状态,替代之前的摄像机。
  • 如果在场景树中移除了激活状态的摄像机,树形下排在第一的摄像机将替代之前被移除的摄像机。

光照 Lights

在Godot中没有限制光照的数量和类型。想添加多少就添加多少(只要性能允许)。

posted @ 2018-03-18 16:49  joojhoo  阅读(1865)  评论(0编辑  收藏  举报