unity 3d右上角的坐标系怎样unity3d 调整坐标系

后使用快捷导航没有帐号?
只需一步,快速开始
&加载中...
查看: 4891|回复: 1
unity3d的世界坐标转化成屏幕坐标
TA的其他好贴
马上注册,加入CGJOY,让你轻松玩转CGJOY。
才可以下载或查看,没有帐号?
使用函数:Camera.WorldToScreenPoint
原型:function WorldToScreenPoint (position : Vector3) : Vector3
返回值:Vector3 中 x,y是屏幕中的位置,z是坐标到摄像机的距离 屏幕左下方是(0,0);右上方是(pixelWidth,pixelHeight)
[java] view plaincopyprint?
01.var target : T&&
02.function Update ()&&
04.var screenPos = camera.WorldToScreenPoint (target.position);&&
05.print (&target is & + screenPos.x + & pixels from the left&);&&
如何让别人关注你?
没这么简单 虽然官方手册是这么说的 但是Y轴不好调,还有最好使用Camera.main
本楼回复(<span id="dp_count_)
如何让别人关注你?
Powered by你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
3ds max 导出的fbx,放到unity 中,发现模型的坐标发生了偏移。如下图,模型的坐标为 0,0,0
可实际上小方块所处的位置才是 0,0,0
怎么把模型的坐标弄到模型中心位置(就是红绿蓝 三个箭头那里)?
max中已经操作了
仅影响轴-》居中到对象,y轴朝上。导出fbx的时候用的默认设置
PS:试了一个简单的模型(如下,一个圆柱和长方体),发现还是同样的问题,不知道是哪个地方没设置好?
把子物体手动设为0后,模型中心点为0,0,0
但整个模型就不对了。
看下里面子物体是否归零了。一般导入后不为零需要手动reset
你的父物体是空模型么?他的位置有没有在max里面置零?这个应该是max导出的设置问题。
题主最后是如何解决这个问题的呢?
要回复问题请先或
浏览: 2532
关注: 4 人Shader 顶点坐标的缩放
shader代码
Shader &Custom/Texgen_Obj_FragMine& {
Properties {
_MainTex (&Base&, 2D) = &white&
SubShader {
#pragma vertex vert
#pragma fragment frag
#include &UnityCG.cginc&
sampler2D _MainT
struct v2f {
pos : SV_POSITION;
uv : TEXCOORD0;
v2f vert (appdata_base v)
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.uv=v.vertex.
float4 frag (v2f i) : COLOR
float4 texCol = tex2D(_MainTex,i.uv);
return texC
}意思是吧顶点的本地坐标作为UV坐标查询纹理
纹理 repeat模式:726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/1404/thread/2_9bae0c473.png');" />
放在一个单位Cube上:效果是这样的
726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/1404/thread/2_e3945601f.png');" />
右上角的顶点坐标x,y为(0.5,0.5),以此类推分别对应纹理坐标。显示了纹理的1/4
接下来在在Inspector上scale设置为(2,2,1);
此时右上角的坐标为(1,1),也就是说,中心到右上角会显示出整张纹理,如图
726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/1404/thread/2_2ce67cfb.png');" />
如果把scale改成(2,2,2)问题就来了,这时显示成和(1,1,1)时一样了,事实上只要等比缩放 xyz ,显示结果都一样,如图:726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/1404/thread/2_6235_aed77b0c4f78133.png');" />
求大神解答,缩放的时候应该是会改变他的坐标的,他对应的纹理坐标也会改变才是,为什么等比缩放,他的纹理坐标不变?
在此先感谢大家!
要评论请先&或者&
我是来捧场的,太高深了不懂
人工置顶!!
:人工置顶!! 这边论坛是人比较少比较冷清么?我想去unity英文论坛提问,就怕英语水平太差,人家看不懂我的问题。。。
:这边论坛是人比较少比较冷清么?我想去unity英文论坛提问,就怕英语水平太差,人家看不懂我的问题。。。 正有此意
人工置顶!!
国内的unity论坛好像就没有特别火的。大神都不屑逛论坛了。
我也不是很懂~我们先不看Scale.Z值,因为贴图时repeat,所以Cube的Scale.x与Scale.y决定了使用贴图的纹理坐标。如果是(2, 2),那么Cube的正面顺时针坐标就是(-1, 1), (1, 1), (1, -1), (-1, -1),分别对应贴图的左上角,右上角,右下角和左下角。然后再看Z值,我第一反应Shader的Texture属性有纹理坐标生成的方式,具体如何生成应该与OpenGL相同,我没学过。给LZ找了一篇文章unity3d 屏幕坐标、鼠标位置、视口坐标和绘制GUI时使用的坐标
我的图书馆
unity3d 屏幕坐标、鼠标位置、视口坐标和绘制GUI时使用的坐标
unity3d中的屏幕坐标系 是以&屏幕 &左下角为(0,0)点 右上角为(Screen.Width,Screen.Height)
鼠标位置坐标与屏幕坐标系一致
视口坐标是以摄像机为准& 以屏幕的左下角为(0,0)点 右上角为(1,1)点
绘制GUI界面时使用的坐标是以& 屏幕& 的左上角为(0,0)点 右下角为(Screen.width,Screen,Height)
经常会用到 某个物体的世界坐标到屏幕坐标的转化然后再屏幕上绘制出这个物体的代表性图片
是这样做的
1、Vector3 ScreenPos=Camera.WorldToScreenPoint(trans.Position);
2、GUIPos=new Vector3(ScreenPos.x,Screen.height-ScreenPos.y,0);
然后按照这个坐标绘制图片就可以了
TA的最新馆藏
喜欢该文的人也喜欢

我要回帖

更多关于 unity3d 调整坐标系 的文章

 

随机推荐