国庆,中秋收假了,菜鸟在这里给大家道声祝福:

同时可能不少人都已经知道,就在放假前,「Creator3D 1.2.0 正式版」 已经发布。菜鸟后边的自学demo也将全部用1.2.0,大家在打开demo时一定要注意版本奥。

前言

今天菜鸟分享一个小的技术点:「3D模型应该怎样显示到2D的ui层上边」。最近逛论坛经常看见有关于这个问题的帖子,正好菜鸟后边也要用到,那就提前研究一下。下边将实现的两种方式简单说明一下。

效果

咱们还是先来看看效果:

1.UIMeshRenderer 组件实现效果

刚接触1.2.0版本的人可能对这个比较陌生,在之前的版本他有另一个名字「UIModel」,在1.2.0版本改名成了「UIMeshRenderer」

2.RenderTexture 实现效果

正文

1.UIMeshRenderer实现方式

首先建议大家看一下「UIMeshRenderer组件」的官方文档,这种方式的实现基本上不涉及代码,但是有几个特别需要注意的问题,我大概说下

  • 1.菜鸟习惯将3d节点与2d的ui节点分开放,2d的ui节点默认在Canvas下。3d的节点会创建一个父节点放置,也就是统一放置到ModelContro下,类似于这样:
  • 2.添加MeshRenderer组件到3d模型节点,

    • 官方文档是这样说的

添加方式是在层级管理器中选中带有或继承自 MeshRenderer 组件的节点,
然后点击 属性检查器 下方的 添加组件 按钮,选择 UI/MeshRenderer即可

  • 3.添加了MeshRenderer组件后大家预览可能发现并没有效果

    • 接下来就是这种方式的需要注意的重点了:
    • 「1:绑定了MeshRenderer组件的3d节点必须放在Canvas下,也就是2DUI层」
    • 「2:3d节点的大小,3d节点添加了MeshRenderer组件,并且放置到Canvas下,那么他的大小将不会按照3d节点在摄像机下的大小显示,而是按照3d节点相对Cavase的大小来显示,通常模型的大小需要缩放到在UI层下的实际预览大小」
    • 「3:材质,当大小和层级调整好以后你会发现模型是显示出来了,但是是黑的,如图:」
  • 「你已经到了最后一步了,大家的默认effect 应该是builtin-standard吧,只需要将其改为builtin-unlit就可以了」

2.RenderTexture 实现方式

这种方式主要是通过代码来实现的,「把 3D 相机照射的内容绘制到 UI 的精灵帧上」。 在菜鸟出demo的时候是国庆前,文档和API都还没有更新,还是之前版本的。1.2.0版本对部分参数进行了调整。现在好像API调整了,文档还是之前的,但是没啥影响。 下边咱们说一下重点:

  • 1.原理就是 把 3D 相机照射的内容绘制到 UI 的精灵帧上
  • 2.那么主要就是3d摄像机,需要创建一个摄像机,然后将你所需要显示在ui上的3d节点移动到摄像机的视觉范围内
  • 3.创建Sprite用来显示摄像机渲染出来的显示
  • 4.代码实现
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 参数的调整

  • 5.在实现过程中可能会出现,本来只想显示指定的模型,但是会将摄像机的缓冲颜色也显示出来,如图:

这里菜鸟是将摄像机的ClearColor的透明度直接调为0,

android显示3d模型_Creator3D:太厉害了!3D模型原来可以这样显示在2DUI上相关推荐

  1. lr模型和dnn模型_建立ML或DNN模型的技巧

    lr模型和dnn模型 机器学习 (Machine Learning) Everyone can fit data into any model machine learning or deep lea ...

  2. Android之解决toolbar里面显示返回按钮图片太大和没有水平居中的问题

    1.问题 1.toolbar里面显示返回按钮图片太大 2.返回按钮图片没有水平居中 2.解决办法 1.把drawable里面的图片移动到mipmap-xhdpi里面去,还大了就移动到mipmap-xx ...

  3. android 3d模型ppt,PPT已支持3D PPT怎么插入3D模型?

    很多人都知道新版PowerPoint能够插入3D模型,但3D模型又该去哪儿下载呢? 1.站长素材3D模型网 网址://sc.chinaz.com/3D/ 站长素材是一家很不错的3D建模网站,模型数量多 ...

  4. github上的优秀android开源项目 大全 真是太他妈的全了!!!!!!

    酷炫不需要理由 http://blog.csdn.net/a774057695/article/details/49889437 https://github.com/XinRan5312/andro ...

  5. libgdx 3d_使用Java和libgdx进行3D游戏编程,使用Blender建立模型

    libgdx 3d Or- the journey through the x, y, and z axes through the lens of a computer screen. 或 -通过x ...

  6. Android OpenGL ES 学习(九) – 坐标系统和实现3D效果

    OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学 ...

  7. Android高级图片滚动控件,编写3D版的图片轮播器

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17482089 大家好,好久不见了,最近由于工作特别繁忙,已经有一个多月的时间没写博 ...

  8. 照片转3d模型_科技造假?3D打印的人像逼真到让人不敢相信!

    现在关于"科技造假"的话题特别多.先有zao换脸,又有声音模拟器换声音骗钱,很多小伙伴再也不敢相信别人了. 点击添加图片描述(最多60个字) 这才哪到哪啊兄弟们,换脸换声音都是小儿 ...

  9. Android系统Surface机制的SurfaceFlinger服务的线程模型分析

    在前面两篇文章中,我们分析了SurfaceFlinger服务的启动过程以及SurfaceFlinger服务初始化硬件帧缓冲区的过程.从这两个过程可以知道,SurfaceFlinger服务在启动的过程中 ...

最新文章

  1. 在线音乐电台Pandora股价暴涨20% CEO肯尼迪辞任
  2. 好消息,MaxtoCode完全支持2005BETA2版,多谢恩电提供的测试样例
  3. stl里面stack的注意事项
  4. 二叉树中进行 BFS 和图中进行 BFS 最大的区别
  5. linux锁定账号 让其不能修改密码,passwd - 用于让用户可以更改自己的密码
  6. 随手小记:都是反着的
  7. YOLOX目标检测模型Keras实现,超越Yolov5
  8. java课程设计文档_Java课程设计-文档相似性检查系统(完整)测试版
  9. Mac 安装和配置 Maven
  10. 11计算机专业vb试题答案,11高三计算机专业VB试题(三)
  11. java 32位_java8update下载
  12. 冰点还原无法修改计算机时间,安装冰点还原后无法更改系统时间怎么办
  13. 组建家庭计算机网络过程是怎么样的,如何组建完善的家庭无线网络操作步骤
  14. HRT:使用Huge Pages进行低延迟优化
  15. 朋友圈爱心拼图php源码_朋友圈爱心形配图怎么弄 微信朋友圈九宫格心形拼图教程方法...
  16. GNN教程:采样模型GraphSage理解(工业上图模型的雏形)
  17. 如何抢功,甩锅,立于不败之地???
  18. 自己编写代码去听网易云音乐的歌曲,以及观看MV,还可以下载奥
  19. 编写程序求反正弦函数近似值
  20. undefined reference to symbol ‘dlsym@@GLIBC_2.4‘ 解决

热门文章

  1. OSG官方自带的例子程序简介
  2. Android开发之常见面试题Activity跳转生命周期变化
  3. Android开发之带进度条的WebView
  4. mysql数据库没有密码_MySQL用户数据库没有密码列-在OSX上安装MySQL
  5. 基于mcp940反编译Minecraft源代码
  6. java MD5 并发
  7. C#日期时间类型格式化大全集 C#DateTime 类型格式化大全集
  8. Backbone.js源码解读(转载)
  9. 【转载】C/C++语言分析 每年学一种编程语言 git历史
  10. ARM Linux 如何--注册和触发--软中断