unity3d GL画线/物体跟随/坐标系转换

看见标题的人是不是在想...

一个小小的GL画线难吗?

一个小小的物体跟随难吗?

嗯,的确,一点不难。。。。

我一开始也是像你们那样想的,但是实际操作起来,还是和理论有区别的

写这个demo起因是这样的:

面试到了一家虚拟现实的公司,因为没有去公司

网上直接谈的,谈妥了hr估计是想看看我能不能胜任

给了我一张效果图,让我去实现画线的功能

咳咳,要求还是比较细致的,这里我们后面说

废话不多说,老规矩,先上效果图,然后直接进入主题

第一张是hr给我的图,第二张是我自己实现的

需求如下:

1、模型是旋转的

2、线条必须在模型上方

3、模型旋转时线条动态调整到相对应的位置(也就是说不管模型怎么旋转,线条永远指着文字描述对应的部位)

4、线条起始位置(指向文字描述的那一端)保持在文字正下方

5、线条终止位置(指向3D模型的那一端)画上蓝点

6、比如双手、双脚等同类物体,可以一个文字描述指向两个3D模型部位

对应解决方案:(画线用GL)

1、transform.Rotate

2、设置层、使用两个camera、设置camera Depth

3、设置子物体,取子物体世界坐标

4、计算文字的宽高

起始位置X = 起始位置屏幕X坐标 + 文字宽 / 2(X坐标在文字中间)

起始位置Y = 起始位置屏幕Y坐标 - 文字高度(Y坐标在文字下方)

5、取对应部位的世界坐标,然后转换成屏幕坐标,在该位置画一张蓝点图片

6、这个太简单了- -!设置为同一起始位置即可

最近实在太忙,代码方面我就不一一叙述,望谅解

思路已经给出来了,大家可以按照我提供的思路去处理

如果遇到问题搞不定可以给我留言,也可以下载我提供的demo研究

下载链接:http://pan.baidu.com/s/1o6oOi1s

本文链接:http://www.cnblogs.com/shenggege/p/4222272.html

时间: 2024-08-06 18:13:28

unity3d GL画线/物体跟随/坐标系转换的相关文章

Unity3d LineRenderer画线

[狗刨学习网] 1.  画多条线 画多条线需要在场景中放置多个GameObject,因为一个GameObject只能添加一个LineRenderer Component. 2.  线段样式 线段的样式由LineRenderer组件的材质控制 3.  坐标系 LineRenderer使用了2种坐标系:World和Location.在设置目标点的时候需要注意你使用的坐标系是哪一种. Location: transform.LookAt(rh.point);  //GameObject始终面对目标点

unity GL画线

对某篇文章加以修改.把这个脚本挂到相机下,才能显示. using UnityEngine; using System.Collections; public class joint{ public Vector3 org; public Vector3 end; } public class Drawline : MonoBehaviour { private Vector3 orgPos; private Vector3 endPos; private bool canDrawLines  =

unity3d 使用GL 方式画线

这个是画线部分 private Vector3[] linePoints; public int m_LineCount; public int m_PointUsed; public void RenderPath() { GL.Begin(GL.LINES); for (int i = 0; i < m_LineCount - 1; ++i) { GL.Vertex(GetPoint(i)); GL.Vertex(GetPoint(i + 1)); } GL.End(); } 但是这个画线部

unity3d NavMeshAgent 寻路画线/画路径

今天在群里看见有个小伙在问Game视图寻路时怎么画线 正好前几天写了个寻路,而且自己也不知道具体怎么在寻路时画线,所以决定帮帮他,自己也好学习一下 在百度查了一下资料,直接搜寻路画路径.寻路画线...... 我可不是伸手党,我只是想看看别人是怎么实现的 结果什么都没有搜到!!那就直接搜unity3d 画线吧.....  果然很多资料!! Debug.DrawLine:使用这个函数只能在 screen 中看见画的线,在 game 中看不见 那我们要怎么在game中画线呢 百度给我答案:LineRe

OpenGL进阶示例1——动态画线(虚线、实线、颜色、速度等)

用OpenGL动态绘制线段,其实很简单,但到现在为止,网上可参考资料并不多.于是亲自动手写一个函数,方便动态绘制线段.代码如下: #include<GL/glut.h> //OpenGL实用工具包 #include <Windows.h> /*所遇问题: 1.系统API函数Sleep()不听话,睡眠时快时慢(可能跟我计算机当前运行程序有关吧) 解决方案:重写Sleep()函数,实质为空循环.仅用于Debug下,Release会将其优化 2.动态画直线,朝某些方向画线时出现块状 解决

unity2d 实现物体跟随鼠标绕一个点旋转效果

在2D游戏中,类似泡泡龙炮台发射.敌人飞机永远指向PLAYER.愤怒小鸟弹弓发射等效果,都需要用到物体跟随鼠标绕一个点旋转的效果,在unity中实现代码很简单,但是在理解上有一定障碍,因为unity是3D界面,他的旋转并不是2D世界中那么简单. 实现这种效果,可以使用两种方法,一种是采用角度计算,一种是采用向量运算: 1,角度运算容易理解,但是代码较为繁琐,可以参考 点击打开链接, 2,向量运算实现 1),向量运算简单复习 向量指具有大小和方向的几何对象,可以形象化地表示为带箭头的线段. 也就是

Unity GL画折线

新建一个脚本,这个物体得挂在有摄像机组件的物体上才能生效 OnPostRender() 这个函数才会被自动调用(类似生命周期自动调用) 然后就可以代码画线了,原理是openGL的画线 using UnityEngine; using System.Collections; using System.Collections.Generic; /// <summary> /// GL画图 /// </summary> public class GLDraw : UnityNormalS

画线缩放、瞳距缩放、Line延长到指定长度,内附效果,源码供应,解压就跑

原文:画线缩放.瞳距缩放.Line延长到指定长度,内附效果,源码供应,解压就跑 前言 公司项目需要做个画线缩放,我司称之为瞳距缩放,简而言之就是:2张图,从第一张图画一条线,再从第二个图画一条线,第二条线以第一条为基准,延长到一致的长度,并同比缩放图片:文字太枯燥,请先实例图 例子1:以皮卡丘为例,我要把路飞的拳头缩放到皮卡丘头那么大 例子2:以皮卡丘的基准,缩小路飞,与其身高一致 好了,相比看了上面的2个效果图,就明白了大致意思,这个demo可以获得,Canvas里面的Line如何顺着线条方向

用GL画出人物的移动路径

注意:用Debug画的线会存在穿透问题 没啥好解释的,直接看代码: using UnityEngine; using System.Collections; using System.Collections.Generic; /* * 找不到设置线宽的方法,目前的解决方法就是用画矩形代替画线来实现线的粗细 */ /// <summary> /// 必须将此脚本放在摄影机上才能看到绘画内容,DebugDraw可以不用,但DebugDraw画的内容 /// 只能在编辑模式下看得到. /// <