• 已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。CSDN视频网址:http://edu.csdn.net/lecturer/144 在学习Unity引擎或者是其他3D游戏引擎时,经常遇到的...

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。

    CSDN视频网址:http://edu.csdn.net/lecturer/144

    在学习Unity引擎或者是其他3D游戏引擎时,经常遇到的问题就是各个坐标空间,在以前的博客中也给读者介绍过,本篇博客里用通俗易懂的语言再给读者揭露一下为什么需要这么多坐标空间?以及如何产生矩阵变换或者说利用矩阵变换解决问题。

    在生活中我们经常遇到问路的,有的人方向感比较强,而有的人方向感比较弱,针对这些人指路时就要注意了,方向感强的人,你可以告诉他向东走大约300米,再向北走100米,你给他说的这些就是以东南西北为坐标轴介绍的,方向感弱的人,你就不能这么说了,你只能说向向前走300米,再向左走100米,这时你使用的是以这个路人围原点的坐标空间,通过这个案例,你可以看到不同的指路方式对应的就是我们不同的坐标轴向。由此可见,我们在生活中在不同的情况下使用不同的坐标空间,这个跟游戏中使用不同的空间是类似的。

    Unity3D引擎开发3D游戏时,也会面临着各个坐标空间的变换,在这里给读者普及一下,这样开发者再做一些空间变换时更容易上手。Unity3D引擎使用的是扩展名为FBX的模型,模型的制作是美术人员用建模工具Max制作完成导出的,除了模型还包括图片,比如高光,法线等,关于材质的渲染可以使用Unity3D自带的Shader或者自己编写Shader。制作的模型相对于它自身而言就是局部空间也称为模型空间,也称为局部空间,每个模型都有自己独立的坐标空间。当它移动或者旋转时,模型空间也会跟着它移动和旋转。打个形象比喻,我们在公司的房间里面移动时,我们自身的空间也在跟着移动,当我们转身时,我们的坐标空间也在跟随变化。

    在模型制作时,美术人员会给模型一个坐标,默认的情况下都是设置成(0,0,0),这个坐标是作为父节点的坐标,模型会有自己的孩子节点,假设带有孩子节点的物体如下图所示:

    孩子节点的坐标是(2,2,0),它是子物体的局部坐标,下面会通过矩阵转换的方式,计算一下它在Unity中的世界坐标,也是高速读者如何利用矩阵变换获取到在世界空间的世界坐标。在Unity3D引擎使用的是左手坐标系也就是Z轴朝里,X轴朝右,Y轴朝上。将我们制作好的模型拖入到Unity编辑器后的效果如下所示:

    红色箭头表示的是X轴,绿色的箭头表示的是Y轴,蓝色的箭头表示的是Z轴。它在世界场景中的坐标是(0,0,0)换句话说就是它自身的局部坐标与世界坐标重合。它的孩子节点是我们上面提到过的,下面我们将模型进行位移,旋转,缩放进行操作,我们进行缩放(2,2,2),旋转(0,150,0),位移(5,0,25),在Unity的表现效果如下所示:


    我们可以构建出模型变换矩阵,在这里要注意一个问题,它们变换的顺序是一定的,不能改变。先进行缩放,在进行旋转,最后进行位移操作。相应的矩阵变换如下所示:


    接下来我们对模型的子物体进行模型变换如下:


    也就是说,在世界空间下,模型的子孩子的位置是(9,4,18.0)这样我们通过矩阵变换就得到了子孩子的世界坐标,其实这些基本运算我们在游戏开发中也是经常使用的,比如我们可以自己利用矩阵变换实现实时阴影,Unity3D自带的阴影由于消耗比较大,不容易在移动端实现,我们自己可以利用矩阵变换实现,效率得到提升。

    后面继续介绍观察空间的矩阵实现。













    展开全文
  • Unity3D 场景渲染到Cubemap文件 插件

    Cubemap Renderer

    概述

    Unity Cubemap渲染器

    问题

    • 有时,发现一些Unity资源包中的场景的环境效果不错,希望将其渲染成Cubemap供天空盒使用。
    • Unity场景中需要制作一些反射效果的材质,例如玻璃,金属等,需要将场景渲染成Cubemap,
      结合反射Shader表现效果。

    条件

    • Unity提供ScriptableWizard类快速创建简易扩展编辑器窗口。
    • Unity提供Camera.RenderToCubemap方法渲染Cubemap。

    方案

    • 编写扩展编辑器窗口,指定目标渲染摄像机(渲染细节调节摄像机参数即可)。
    • 选择保存路径,输入文件名,渲染场景到Cubemap文件。

    实现

    • CubemapRenderer.cs 绘制扩展编辑器窗口,渲染场景到Cubemap中。

    源码

    展开全文
  • 因为链接中的例子实在OpenGL上的,这里我记录一下自己在unity3D中两个问题的出现和对应的简单解决办法。    阴影的生成过程包括两个主要过程: 1)从光源方向对场景进行渲染,通过一个深度系统,渲染出一个shadow ...
           shadow ance和peter panning是光线下产生阴影的常见问题,问题的产生可以参考这里,非常详细。因为链接中的例子实在OpenGL上的,这里我记录一下自己在unity3D中两个问题的出现和对应的简单解决办法。
           阴影的生成过程包括两个主要过程:
    1)从光源方向对场景进行渲染,通过一个深度系统,渲染出一个shadow map,用于记录那些离光源较近的表面。
    2)从正常的角度渲染场景,但是采样的时候必须测试每一个点是否处于阴影区中。
    当shadow map的分辨率较低,而且与接收光线的平面有夹角时,就会产生shadow ance,原理可以参考上面的链接,非常详细。unity3D中阴影渲染的shadow <wbr>ance和peter <wbr>panning探究
    unity3D中阴影渲染的shadow <wbr>ance和peter <wbr>panning探究
    要解决shadow,方法非常简单,就是通过调整Bias属性。Bias属性是一个修正值,确保在第二次渲染的时候,渲染点实际位深度 - Bias > shadow map中的位深度。这个修正值确保了实际渲染点位深度稍微大于shadow map中记录的数字,也就是更不容易被判定为阴影点,从而防止平面上出现误判的阴影点。修正后的效果
    unity3D中阴影渲染的shadow <wbr>ance和peter <wbr>panning探究

    unity3D中阴影渲染的shadow <wbr>ance和peter <wbr>panning探究
    peter panning意思是物体发生分离现象。可以看到上图左边,平面与地面的连接处,发生了细微的分裂现象。而且为了解决shadow ance而加入的bias值,会加剧这种现象。
    unity3D中阴影渲染的shadow <wbr>ance和peter <wbr>panning探究

    unity3D中阴影渲染的shadow <wbr>ance和peter <wbr>panning探究
    为了解决peter panning,最好的办法就是,避免使用平面,取而代之使用长方体。
    unity3D中阴影渲染的shadow <wbr>ance和peter <wbr>panning探究
    使用长方体之后,peter panning问题消失。

    总结:
    对于shadow ance问题,通过调整Bias修补值来解决,一般肉眼可以测量出合适的Bias值而不需要计算。
    对于peter panning问题,避免使用薄平面,取而代之只用厚的方体。

    注:peter panning只的是小飞侠,他可以将身体分离。
    展开全文
  • 测试了一下u3d下的octane渲染器 目前是免费的,可以随意测试 之前提到过了http://blog.csdn.net/shenmifangke/article/details/76577647 现在赶紧过来试试 我测试电脑是win7 gtx1080 记得提前把显卡驱动之类打好 ...

    测试了一下u3d下的octane渲染器

    目前是免费的,可以随意测试

    之前提到过了http://blog.csdn.net/shenmifangke/article/details/76577647

    现在赶紧过来试试

    我测试电脑是win7 gtx1080 记得提前把显卡驱动之类打好


    unity版本官网下载https://store.unity.com/

    注意目前一定要2017.1的版本,不过现在free里面能下到的就是这个,直接下就行了


    教程可以参考官网

    https://unity3d.com/cn/partners/otoy/octane

    https://unity.otoy.com/guides/installation/


    https://unity.otoy.com/guides/render-simple-scene-using-octane-unity/



    按照步骤安装好后,开启渲染窗口viewport




    unity3d自带的面光源,点光源,射灯都支持,模式随意了

    不过点和设定貌似不能调整模糊程度




    因为渲染需要连接网络,所以记得网要    通





    speedtree材质好像也没有问题,不过还是需要调整效果不是很好



    下面测试了下全景没有问题

    在PBR render target里面选



    但是关于材质方面还是一个需要很长时间测试的问题

    还有更多内容要参考文档了

    更新可以看看文档论坛之类

    https://render.otoy.com/forum/viewtopic.php?f=129&t=61948

    展开全文
  • 在看了最新的Unity2018 demo "Book Of Dead"以后,许多正在使用Unity3D的技术美术纷纷感叹为何自己的场景与Demo差距那么大,即使有团队内美术大大的高质量材质模型,也很难达到Demo中这样的效果,甚至无法达到

    自从Unity进入Unity5以后,一直到本文发布前最后一个正式版本Unity2017.3,这款引擎的光照烘焙水平是在不断的提升,以至于现在足以开发大型3A大作。在看了最新的Unity2018 demo "Book Of Dead"以后,许多正在使用Unity3D的技术美术纷纷感叹为何自己的场景与Demo差距那么大,即使有团队内美术大大的高质量材质模型,也很难达到Demo中这样的效果,甚至无法达到同级别的UE4的美术水平。究其原因,80%来自于对光照烘焙的设置和材质的设置不正确,20%来自于对待特殊需求时,没有正确使用或编写shader以应对。因此,我们将会详细讲解如何自定义场景设置,材质以及如何在需要时编写和使用需要的Shader,有兴趣一同交流的朋友可以加一下QQ群,鼓励技术交流,谢绝招聘广告:146025605。

    在这里使用一个比较老的室内场景作为示例,场景是通过正版途径购买,这里就不分享了,希望大家支持正版拒绝盗版:


    在这个画面中我们大致可以看到以下几个细节:首先画面有后处理效果包括环境光遮蔽,TAA抗锯齿,墙上天花板的屏幕空间反射等,后处理脚本使用的是最新的Post Process v2,可以在Github上自行下载,其次地面上的反射与其他部分的反射明显不同,更为清晰且法线效果明显,这里使用的是笔者自制的实时平面反射Shader,想要下载的朋友可以加群下载,地上的拖鞋,枕头等都采用了DX11特有的曲面细分Tessellation技术,而不是DX10时代低效率的Geometry Shader,最后放眼整个画面,明暗搭配相对适当,没有出现一些反物理的现象,可以达到我们合格的3A级别渲染,而这些技巧的实现会在之后详细讲解。

    展开全文
  • unity3d渲染顺序

    2018-07-13 00:00:44
    Unity中的渲染顺序自上而下大致分为三层。 最高层为Camera层,可以在Camera的depth那里设置,设置之后,图形的渲染顺序就是先绘制depth低的相机下的物体,再绘制depth高的相机下的物体,也就是说,depth高的相机会...
  • Unity3D Shader 渲染流程

    2018-09-14 16:37:56
    Shader渲染流程是CPU和GPU合作渲染一帧的过程,绘制过程分为三个阶段: 应用程序阶段(CPU控制)、几何阶段(GPU控制)、光栅化阶段(GPU控制) 应用程序阶段:主要进行CPU和内存的算法。在这个阶段的主要工作是...
  • Unity3d 离线渲染插件

    2020-06-02 23:32:44
    Unity3d 离线渲染,Octane for Unity3dUnity3d烘焙,Unity3d VR制作
  • 在室内场景烘焙中,一般分为以下两种情况,人工照明和自然光照明,人工照明的主要难点在于灯光的强度与范围的平衡,而自然光照明的难点在于“增强”阳光,所谓增强,在我们的生活中太阳光的表现绝不仅仅是一个平行光...
  • 游戏开发中经常需要平衡GPU和CPU的性能消耗 比如游戏加载时的 Loading 界面,往往伴随着资源请求(网络请求数据和本地请求资源),这些请求很消耗CPU的资源,如果Loading也放在CPU做的话会抢占CPU...OpenGl 渲染...
  • 软件介绍: Unity3d中低模型MediterraneanFurniture.unitypackage,制作的很好。包含3个场景,两个客厅一个卧室。Assetstore里算得上精品。场景请用Unity3d4.0.1以上版本打开,支持win64位。
  • Unity3D 渲染操作

    2019-08-27 20:56:20
    步骤: 第一步: 先创建【纹理文件夹“Textures”】和【渲染文件夹“Material”】,并且存放纹理图片 【创建】渲染对象 ...【选择】shader处理方式,Legacy ...【拖拽】渲染对象,给物体对象一个渲染方式 ...
  • Unity3D 渲染路径

    2017-06-14 18:26:28
    Unity渲染路径: Unity支持不同的渲染路径。您应具体取决于你的游戏内容和目标平台/硬件来选择使用哪一个。不同的渲染路径有不同的特点和性能特点,主要影响灯光和阴影如果图形卡不能处理选定的渲染路径,Unity将...
  • 最近开始研究Unity3D游戏场景优化,每次提及游戏优化这个话题的时候,我的脑海中都会浮现出《仙剑奇侠传六》这个让四路泰坦都光荣陨落的神奇游戏,作为一个使用Unity3D引擎进行游戏开发的仙剑玩家,我曾经天真的以为...
  • 已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。 Shader编程对于图形学渲染来说非常重要,为了让读者理解Shader编程的原理,文章会结合着可编程流水线原理...
  • 其实3D物体基本不用考虑渲染顺序问题,但是在纯2D以及3D和2D混杂的情况下就要...事实上这个问题unity3d自身已经提供了解决方案。 http://docs.unity3d.com/ScriptReference/Renderer.html 我们可以看到,所有的Rende
  • Unity3D无缝场景切换解决方案 - 简单场景切换
  • 裁剪 Camera.StandaloneCull利用裁剪结果进入渲染流程 Camera.Rander设置相机为当前相机更新深度图 UpdateDepthTextures初始化Render,设置RT,投影矩阵(SetProjectionMatrix)和视口(SetViewport)等开始渲染所有几何...
  • unity3d游戏场景制作

    2013-06-24 13:44:28
    运用unity3d熟练,不仅可以更巧妙的熟练制作出游戏更重要的是可以做到将自己完美的想象发挥的淋漓尽致。  UniSky是Unity3d的一款模拟环境天气的插件,使用它可以简单的实现呼风唤雨的各种功能。  ...
  • 很多刚刚接触Unity3d的童鞋花了大量的时间自学,可总是把握不好Unity3d的烘焙,刚从一个坑里爬出来,又陷入另一个新的坑,每次烘焙一个场景少则几个小时,多则几十个小时,机器总是处于假死机状态,半天看不到结果,...
1 2 3 4 5 ... 20
收藏数 11,253
精华内容 4,501