请问unity3d中,那些比较复杂的材质球是怎么做出来的?谢谢啦

 我来答
城西斯玛特
推荐于2017-09-23 · 本无意与众不同,怎奈何品味出众
城西斯玛特
采纳数:306 获赞数:609

向TA提问 私信TA
展开全部
这是我在蓝铅笔上面看到的关于材质球的一些技巧。

里面提到的中心要点就是联结(combine),联结,再联结。而对于具体怎么联结他却略过不提,于是只好自己研究。

先解释下联结的原理和意思:文档里说,显卡对于一个含100个面片的物体的和含1500个面片的物体的渲染消耗几乎是等价的。所以如果你有N个同一材质的东西,那么把他们联成同一个物体再统一用一个material那么对于显卡的渲染消耗就要降低N倍。

再讲具体做法,方法有2:

1是直接在max等工具里联结好,贴上同一材质再导进来,这方法固然好却不灵活,而且通常不实用,因为项目里大量同一材质的东西都是unity系统的树啊花花草草啊石头等。

2、就是在unity里再联结,这个要怎么做呢,其实也挺简单的,经常看Island Demo项目的人应该很早就注意到里面的石头这些都是连在一起的,原因就在这里,他提供了现成就脚本实现联结。

先到Island Demo的Assets/Script下找到CombineChildren.cs和MeshCombineUtility.cs两个脚本复制到自己的项目文件(我们要用的只是前者,但他会调用后者,没有后者unity会报错,所以把后者扔到项目里不管就好)

然后把你项目里那些用同一Materials的东西扔到一个空物体里面去,再把CombineChildren.cs贴到那个空物体上,搞定!

下面,我们来看看这个神奇的脚本帮我们做了什么工作,运行游戏之前,见图1,Island Demo就是按上述方法做了个_RocksCombined的东西,上面只贴着这个脚本,他里面全是岛上个一块块小石头,用的是同一个Materials

运行游戏后,神奇的事情发生了。

这个_RocksCombined上面出现了一个Combined Mesh,并带有他里面石头的Material,他里面的小石头的MeshRenderer的钩都自动去掉了,即被disable了。

这就是这个脚本自动帮我们做的优化方法,实现了对同材质物体的联结,从而降低了系统开销。
正义King
2015-01-05 · TA获得超过2102个赞
知道小有建树答主
回答量:974
采纳率:94%
帮助的人:663万
展开全部
自己写的shader,要会计算机图形学,会cg语言
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黛比人泰
2015-01-10
知道答主
回答量:11
采纳率:0%
帮助的人:16.4万
展开全部
用Unity的Shader 语言写出来的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式