赞
踩
国庆,中秋 收假了,菜鸟在这里给大家道声祝福:![](https://img-blog.csdnimg.cn/img_convert/fac4c9fc61c39a59b2c75bb88d83e4c1.png
同时可能不少人都已经知道,就在放假前,Creator3D 1.2.0 正式版 已经发布。菜鸟后边的自学demo也将全部用1.2.0,大家在打开demo时一定要注意版本奥。
今天菜鸟分享一个小的技术点:3D模型应该怎样显示到2D的ui层上边。最近逛论坛经常看见有关于这个问题的帖子,正好菜鸟后边也要用到,那就提前研究一下。下边将实现的两种方式简单说明一下。
咱们还是先来看看效果:
刚接触1.2.0版本的人可能对这个比较陌生,在之前的版本他有另一个名字UIModel,在1.2.0版本改名成了UIMeshRenderer
首先建议大家看一下UIMeshRenderer组件的官方文档,这种方式的实现基本上不涉及代码,但是有几个特别需要注意的问题,我大概说下
添加方式是在层级管理器中选中带有或继承自 MeshRenderer 组件的节点,
然后点击 属性检查器 下方的 添加组件 按钮,选择 UI/MeshRenderer即可
这种方式主要是通过代码来实现的,把 3D 相机照射的内容绘制到 UI 的精灵帧上。
在菜鸟出demo的时候是国庆前,文档和API都还没有更新,还是之前版本的。1.2.0版本对部分参数进行了调整。现在好像API调整了,文档还是之前的,但是没啥影响。
下边咱们说一下重点:
const _colorAttachment = new GFXColorAttachment(); const _depthStencilAttachment = new GFXDepthStencilAttachment(); let renderTex = new RenderTexture(); renderTex.reset({ width: 500, height: 700, passInfo: { colorAttachments: [_colorAttachment], depthStencilAttachment: _depthStencilAttachment, } }); let spriteframe: SpriteFrame = this.camerSprite.spriteFrame; let sp: SpriteFrame = new SpriteFrame(); sp.reset({ originalSize: spriteframe.originalSize, rect: spriteframe.rect, offset: spriteframe.offset, isRotate: spriteframe.rotated, borderTop: spriteframe.insetTop, borderLeft: spriteframe.insetLeft, borderBottom: spriteframe.insetBottom, borderRight: spriteframe.insetRight, }); this.camera.targetTexture = renderTex; sp.texture = renderTex; this.camerSprite.spriteFrame = sp; //对比和之前版本的代码,两点调整: //- 1.SpriteFrame 属性调整 //- 2.renderTex.reset 参数的调整
在这里插入图片描述
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。