Unity 3d 使用CubeMap来进行反射的创建方法
本帖最后由 123wys 于 2015-11-25 15:02 编辑Unity 3d 使用CubeMap来进行反射的创建方法
首先我们需要新建一个JS脚本,JS脚本和C#脚本其实在很多地方还是相同的,只不过细节地方有区别,所以JS脚本对于C#程序员来说应该也是无障碍阅读。新建的JS脚本,我们重命名为RenderCubemapWizard
// Render scene from a given point into a static cube map.// Place this script in Editor folder of your project.// Then use the cubemap with one of Reflective shaders!class RenderCubemapWizard extends ScriptableWizard {var renderFromPosition : Transform;var cubemap : Cubemap;function OnWizardUpdate () {helpString = "Select transform to render from and cubemap to render into";isValid = (renderFromPosition != null) && (cubemap != null);}function OnWizardCreate () {// create temporary camera for renderingvar go = new GameObject( "CubemapCamera", Camera );// place it on the objectgo.transform.position = renderFromPosition.position;go.transform.rotation = Quaternion.identity;// render into cubemapgo.camera.RenderToCubemap( cubemap );// destroy temporary cameraDestroyImmediate( go );}@MenuItem("GameObject/Render into Cubemap")static function RenderCubemap () {ScriptableWizard.DisplayWizard.<RenderCubemapWizard>("Render cubemap", "Render!");}}
然后将该脚本置于你所编辑的Unity project的Asset文件夹下的Editor文件夹下面,这个文件夹可能会找不到,不过我们新建一个文件夹再重命名为Editor即可,将之前写好的JS脚本放进去,然后GameObject组件菜单下就会出现Render into Cubemap选项。
如上图所示。
然后我们假设你已经创建了一个场景环境,如果没有,可以用skybox搭建一个简单的环境。接着再创建一个几何球体当作你需要环境反射的位置点(能反射周围环境的位置)。再创建一个新的cubemap来接收环境反射。
需要注意的是,一定要有一个几何球体来反射周围环境位置,也必须要有一个cubemap来接收几何球体反射回来的环境。
如果基本场景与其他几何球体还有cubemap创建完毕。接下来我们可以开始制作cubemap
点击Render into Cubemap,就是上图所示的那个选项。
我们接下来将建立的几何球体置于第二个Render From Position,就是接收反射的位置然后将新建立的cubemap置于第三个Cubemap选项点击最下面的Render就可以开始制作cubemap
我也做了一个,cubemap生成的样子如上图所示,他是六张贴图
图丢了。。。。。。。。。不过光看文字还是可以看懂,这也是一门手艺啊 想要一份,谢谢 不错不错{:1106_362:} verywell !
页:
[1]