效果:将模型渲染到UGUI中

创建材质球

代码实现

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using static UnityEngine.ParticleSystem;public class UIRenderer3D : UIBehaviour
{Canvas canvas;//CanvasGroup canvasGroup;public GameObject Model;public Material CurMaterial;public Texture2D CurTexture;CanvasRenderer canvasRenderer;private Mesh mesh;public override bool IsActive(){return base.IsActive();}private void setCenter(Vector3[] vector3s, Vector3 center){Vector3 pos;for (int i = 0; i < vector3s.Length; i++){pos = vector3s[i] - center;vector3s[i] = pos;}}private Mesh createMesh(){Mesh createMesh = new Mesh();Vector3[] vertices = new Vector3[]{new Vector3(0,0,0),new Vector3(0,100,0),new Vector3(100,100,0),new Vector3(100,0,0),};setCenter(vertices, new Vector3(50, 50, 50));List<UIVertex> uIVertices = new List<UIVertex>{new UIVertex{ position= vertices[0],color =new Color(1,1,1,1),uv0=new Vector2(0,0)},new UIVertex{ position= vertices[1],color =new Color(1,1,1,1),uv0=new Vector2(0,1)},new UIVertex{ position= vertices[2],color =new Color(1,1,1,1),uv0=new Vector2(1,1)},new UIVertex{ position= vertices[3],color =new Color(1,1,1,1),uv0=new Vector2(1,0)},};List<int> indexs = new List<int>{0,1,2,0,2,3};VertexHelper vertexHelper = new VertexHelper();vertexHelper.AddUIVertexStream(uIVertices, indexs);vertexHelper.FillMesh(createMesh);createMesh.RecalculateBounds();return createMesh;}private void setRenderer(Mesh mesh){if (!mesh){return ;}canvasRenderer = GetComponent<CanvasRenderer>();if (!canvasRenderer){return;}canvasRenderer.Clear();canvasRenderer.cullTransparentMesh = false;canvasRenderer.cull = false;canvasRenderer.SetMesh(mesh);canvasRenderer.SetMaterial(CurMaterial, CurTexture);canvasRenderer.SetColor(new Color(1, 1, 1, 1));}private Mesh getModelMesh(){if (!Model){return null;}MeshFilter  meshFilter = Model.GetComponent<MeshFilter>();if (!meshFilter){return null;}Mesh newMesh =  meshFilter.sharedMesh;Vector3[] vers = newMesh.vertices;for (int i = 0; i < vers.Length; i++){vers[i] = vers[i] * 100;}Mesh mesh = new Mesh();mesh.SetVertices(vers);mesh.SetTriangles(newMesh.triangles, 0);mesh.SetUVs(0, newMesh.uv);mesh.SetNormals(newMesh.normals);mesh.SetTangents(newMesh.tangents);mesh.SetColors(mesh.colors);return mesh;}private void createRenderer(){//mesh = createMesh();mesh = getModelMesh();setRenderer(mesh);}protected override void Awake(){createRenderer();base.Awake();}}

脚本挂载

创建要显示的物体,可以是预制或者GameObject对象

创建gameObject  挂载CanvasRenderer组件和上面UIRenderer3D脚本,设置要显示的物体和材质球、贴图

unity UGUI CanvasRenderer 实现UGUI模型渲染相关推荐

  1. unity中NGUI与UGUI的区别?

    什么是UI? UI即User Interface(用户界面)的简称.泛指用户的操作界面,UI设计主要指界面的样式,美观程度.而使用上,对软件的人机交互.操作逻辑.界面美观的整体设计则是同样重要的另一个 ...

  2. Unity 基础 之 在 UGUI 上简单实现VideoPlayer视频播放的功能,简单暂停播放/显示视频名称/显示时长/拖拽播放等

    Unity 基础 之 在 UGUI 上简单实现VideoPlayer视频播放的功能,简单暂停播放/显示视频名称/显示时长/拖拽播放等 目录 Unity 基础 之 在 UGUI 上简单实现VideoPl ...

  3. Unity 毛玻璃效果(UGUI)—高斯模糊

    因为Unity 提供了GrabPass,可以在Shader中很方便的拿到Panel下面的图像,即_GrabTexture. 注:添加优化.原本的搞死模糊效果达不到苹果的那种细腻效果,修改参数即可. 修 ...

  4. 着色器编程_unity中的基础纹理,使用Unity Shader实现基础纹理的渲染效果

    学习通过使用Unity Shader实现基础纹理的渲染效果 目录 学习通过使用Unity Shader实现基础纹理的渲染效果 问1:详细描述一下漫反射纹理.高度纹理.法线纹理.渐变纹理和遮罩纹理? 问 ...

  5. Angular2 模型渲染的一个坑

    今天在使用angular2开发一个CMS项目的时候发现了一个模型渲染的坑,特此记录. 相信很多人使用angular2的时候都有这么一种情况,首先定义一个单例service,作为数据的提供者,在组件中注 ...

  6. 2023.02.07草图大师SU模型渲染- 效果图之加深颜色的色调

    2023.02.07草图大师SU模型渲染- 效果图之加深颜色的色调

  7. 详解Unity中的导入3D模型

    前言 三维模型可以表示任何现实世界中存在的物体,自然也可以表示任何游戏世界中存在的物体,比如地面,山川河流,花草树木,建筑,人物,都需要使用三维模型来表示.一般我们使用一些建模软件来建出游戏中需要的模 ...

  8. Unity抗锯齿,Unity3D模型花闪烁等效果优化。

    Unity抗锯齿,Unity3D模型花闪烁等效果优化. 最近在做全息投影项目,模型闪烁,锯齿明显,自己总结了一些优化方法. 方法一:在场景内摄像机上挂载如下抗锯齿脚本.摄像机改为Skybox或者Sol ...

  9. Cocos2d-x 3D模型渲染

    Cocos2d-x 3D模型渲染 声明:本文使用的是cocos2d-x-3.17的代码 文章中的提到的测试代码下载地址https://gitee.com/Kyle12/Cocos2dRenderStu ...

最新文章

  1. 2018-2019-1 20165310 20165315 20165226 实验一 开发环境的熟悉
  2. OSChina 周六乱弹 —— 这辈子最丢脸的事
  3. 软件体系结构设计文档_一个java架构师是如何设计出一个好的架构的
  4. 画股票图csdn_这个股票今天是要弄啥?
  5. HDU2191 多重背包或者01背包 xingxing在努力
  6. Hibernate使用小札
  7. Django 06模板语言的复用
  8. element -ui 返回顶部
  9. android微信刷脸支付,安卓首发 Find X支持微信人脸支付功能
  10. 资源池以及资源池化是什么意思?
  11. HuTool工具最全介绍
  12. JAVA课程设计--二维码实现签到
  13. android sepolicy 最新小结
  14. MybatisPlus 通用CRUD操作
  15. linux sli 提高效率,性能到底提升几倍?多卡SLI的效率测试
  16. 两点经纬度计算方位角,以正北为0度
  17. android 阿拉伯数字转汉字,Android将阿拉伯数字转换为英文数字
  18. 目前最新最全的xp操作系统大全
  19. 闭包必看面试题分享--01( var a = fun(0); a.fun(1); a.fun(2); a.fun(3); var b = fun(0).fun(1).fun(2).fun(3);..)
  20. WS_EX_TOOLWINDOW导致的窗口一直不能在前面

热门文章

  1. 黑白琴键 java_【琴键巧记】记住钢琴的88个键,其实很简单!
  2. 华为手表gt2pro是鸿蒙系统吗,鸿蒙分布式技术初显身手!华为Watch GT2 Pro ECG款评测...
  3. 从“大数据革命”到“因果革命”
  4. 在Unity中写一个妥妥贴贴的ARPG移动系统(二)
  5. ubuntu安装jdk11并配置环境变量
  6. shell sed传参
  7. 体验“Office 365”,感受云办公带来的助力
  8. 以下关于中国公用计算机互联网,中国公用计算机互联网国际联网管理办法
  9. 不要轻易去改一个 public static 的方法签名,有人可能直接使用了,改签名会带来兼容性问题
  10. linux中less有什么作用,linux中less命令使用