如何让NGUI的对象在3D模型之上

假设场景中有两台摄像机, 一台是NGUI的摄像机, 另外一台是投影摄像机.

投影摄像机看的是3D模型, Depth比NGUI的摄像机要大, Clear Flags设置的是Depth only.

现在想让3D模型夹在两个NGUI控件之间.

尝试的办法: 设置深度, 设置RendererQueue都没有用.

没辙了, 只好把想放到3D模型上面的UISprite也使用3D摄像机来看算了.

现在问题来了, 如何让原本在NGUI里已经把位置大小都调好了的东西, 当它在被一个3D摄像机看的时候依然一样?

如果有NGUI对象mSprite, NGUI的Camera为camera2D, 3D摄像机为camera3D.

注意: 前提是mSprite的位置已经在NGUI中调好, 但是它在3D模型的后面.

//先获取mSprite的屏幕坐标
screenPos = camera2D.WorldoScreenPoint(mSprite.transform.position);
//计算出它要距离3D摄像机的距离
float distance = 1.0f / Mathf.Tan(camera3D.fieldOfView * 0.5f * Mathf.Deg2Rad);
//根据mSprite的屏幕坐标 与 mSprite和3D摄像机之间的距离. 计算出mSprite应该在的位置

Vector3 pos = m_3dCamera.ScreenToWorldPoint(new Vector3(screenPos .x, screenPos .y, distance));
mSprite.transform.position = pos;

  

时间: 2024-09-30 06:33:15

如何让NGUI的对象在3D模型之上的相关文章

Unity3D游戏开发初探—2.初步了解3D模型基础

一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被.机械等等,比如一个大楼的3D模型图.3D模型也包括玩具和电脑模型领域. 互联网的形态一直以来都是2D模式的,但是随着3D技术的不断进步,在未来的时间里,将会有越来越多的互联网应用以3D的方式呈现给用户,包括网络视讯.电子阅读.网络游戏.虚拟社区.电子商务.远程教育等等.甚至对于旅游业,3D互联网也能

【Android界面实现】可旋转的汽车3D模型效果的实现

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 今天要给大家介绍的是如何实现可旋转的汽车3D模型. 先看实现效果 这只是静态图,实际上,这个模型是可以根据手势进行旋转的,效果还可以. 下面我说一下实现的原理.首先,这种3D模型的旋转效果是通过切换不同的图片完成的,在这个例子中,一共有52张图片,展示了360度的旋转效果,差不多每6度一张照片.然后,我们只需要监听盛放图片的ImageView的onTouch事件,完成图片的切换就可以实现这种效果. 下面是

ANDROID应用中嵌入Unity3D视图(展示3D模型)

效果展示:                 开篇废话: 我现在所在的Team每周需要一个人给大家介绍一个知识点,或者新技术.这礼拜正好轮到我了,由于我工作才一年,面对那帮老鸟讲知识点感觉有点作死.所以我就准备选个新技术介绍一下. 由于我在大学里自学过一段时间Unity3D,所以我想介绍的技术就是它,但我现在做的是应用开发,不能做个小游戏去给大家演示.所以我想到比较简单,直观,而且有可能真正能用到的就是在Android应用中展示3D模型.比如在产品展示时直接把这个产品的3D模型展示出来而不是个图片

unity3d设置3D模型显示在2D背景之前(多个相机分层显示)(转)

解决步骤: 1.添加一个摄像机,命名为BackgroundCamera,然后在Layer添加一个background层.并且将plane拖放到改相机节点下. 然后将BackgroundCamera和Plane都置于background层,修改ClearFlags未Depthonly深度渲染,并且设置 CullingMask为只看到background层,还有设置Depth为-1,说明背景层是最深,其他model所在的相机的Depth是 0,NGUI的是1,这里层次关系就是NGUI在最前面,mod

C# winform用sharpGL(OpenGl)解析读取3D模型obj

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11783026.html 自己写了个简单的类读取解析obj模型,使用导入类,然后new个对象,在读取obj模型,然后调用显示列表显示就可以了.至于其他什么旋转移动的你们自己加起来应该很容易的,因为我有看过c#下别人写的obj模型解析的代码项目,加了很多东西,我都找不到自己要用的代码在哪里,而我只需要读取解析obj模型这块代码而已,气的我自己写了个类自己解析,所以我怕我代码写多了, 你们反而看起

cocos2d-x实现3D模型的换装系统的研究

这篇文章不会给出具体实现和代码(因为我也还没有搞定),但是会对我所理解的换装系统进行一些分析,并给出方向. 一.什么是换装系统 RPG游戏中,更换不同的武器.装备,人物模型也会有相应的改变,这就是换装系统.实现换装系统,可以增加表现力,比如暗黑中换不同盔甲,人物看起来也会不一样,有的极品装备还会有光效环绕,这样刷装备才会更加有趣. 二.实现换装系统的方式 1.武器和外挂式组件(比如护肩,披风)的换装. 这个最简单也最基础,在手部或者肩部创建一个绑点,然后将物体挂接上去就行.这类物体大多数是刚体且

iOS11 AR场景中关于3D模型的触碰检测

最新 iOS11中的AR特别火爆,自己也到网上找了几个Demo把玩了下,核心代码无非以下: //AR视图:展示3D界面 @property(nonatomic,strong)ARSCNView *arSCNView; 添加模型方法一: // Create a new scene SCNScene *scene = [SCNScene sceneNamed:@"art.scnassets/ship.scn"]; // Set the scene to the view self.arSC

Unity3D 学习教程 8 3d模型加贴图

点击创建  添加一个文件夹 命令为pic 把图片拖入到工程中 拖入后图片显示在pic文件夹中 把图片拖到立方体中 这样就完成了为3D模型添加贴纸的工作 --------------------------------------------------------------------------------------------------------------------------------------------------- 另一种方法添加贴纸 创建一个贴纸球  点击创建 点击

【pano2vr】网页Flash中简单实现炫酷的3D模型制作

花了两天时间学习如何能够高效的实现3D模型效果,毕竟是从0开始学习,感觉pano2vr这款软件挺容易上手,并且可以很容易实现简单的热点交互,可以根据交互需求设置皮肤,故将这一款软件推荐给大家: 1.简介.http://ggnome.com/pano2vr.用户可以自行下载. 2.简单教程. 3.皮肤编辑.用户可以根据提供的系统皮肤或者自制皮肤或网上资源实现,皮肤可以说是一个默认的播放器. 4.应用.用户可以将其应用于Flash以及网页中,根据官方提供的信息进行摸索制作. Flash API:ht