但是当我把物体B的Scale变为(2,2,2)其余内容全部不改变,再将A作为B的子物体,这是A的Position变为(-0.5,-0.5,-0.5),这是为什么呢?我理解不了是我觉得无论A、B是多么不规则,A、B的Position都是A、B的中心点,为什么父子物体的Position变换还与物体的Scale有关呢?
6 个解决方案
#1
好吧,,貌似我自己的问题自己解决了
物体A变为物体B后,不仅大小发生了成比例的变化,而且在B的坐标系中的位置也会与最初A在世界坐标系中的位置不一样,也就是看似A物体没有动,其实A中心点的位置已经变化了,成为B的子物体之后,A的世界坐标系就变成了B。
这是我自己的理解,不知道对不对,还希望看到这个问题的大神能帮忙解决一下。小女子在此先献上十万分的感谢。
物体A变为物体B后,不仅大小发生了成比例的变化,而且在B的坐标系中的位置也会与最初A在世界坐标系中的位置不一样,也就是看似A物体没有动,其实A中心点的位置已经变化了,成为B的子物体之后,A的世界坐标系就变成了B。
这是我自己的理解,不知道对不对,还希望看到这个问题的大神能帮忙解决一下。小女子在此先献上十万分的感谢。
#2
#3
是不是可以理解为当B的scale变成2之后,它的物体坐标系也被拉伸了2倍
#4
怎么解决的呢?
#5
逮住女程序员一只。好久不来CSDN了。。。
割================================
楼主的理解是错误的。不是说缩放了以后物体的中心点变了。不信你把B放0,0,0 对他缩放2,把A放上去,依然是你看到的结果。
所谓的坐标系,坐标系的转换。以及为什么B缩放了2倍以后 A放上去变成缩放值0。5。
这是因为为了保持坐标变换时,物体不会因为改变父子关系而移动,unity会转换这个过程。好吧,这都是废话。但是由于这个初衷,所以为了让他看起来一致,所以是这样的:
我先解释缩放值:物体最终表现 = 父物体的转换矩阵之积。 所以1= 2*0.5.
那么所谓的坐标为什么变成0.5 0.5 0.5呢.还是之前的初衷导致的。因为父子关系的变更,物体的坐标要从世界坐标转换到父物体的相对坐标。这个相对坐标 是以原先物体之间在世界坐标的距离决定的。一个位置Q1,1,1的物体 和一个0,0,0位置的物体E 他们之间距离永远是根号3。但是位置1,1,1的物体放大2倍以后,物体最终位置 = 父物体的转换矩阵之积。这时候为了要让E相对A不变,所以E只好变成0。5 0。5 0。5
割================================
楼主的理解是错误的。不是说缩放了以后物体的中心点变了。不信你把B放0,0,0 对他缩放2,把A放上去,依然是你看到的结果。
所谓的坐标系,坐标系的转换。以及为什么B缩放了2倍以后 A放上去变成缩放值0。5。
这是因为为了保持坐标变换时,物体不会因为改变父子关系而移动,unity会转换这个过程。好吧,这都是废话。但是由于这个初衷,所以为了让他看起来一致,所以是这样的:
我先解释缩放值:物体最终表现 = 父物体的转换矩阵之积。 所以1= 2*0.5.
那么所谓的坐标为什么变成0.5 0.5 0.5呢.还是之前的初衷导致的。因为父子关系的变更,物体的坐标要从世界坐标转换到父物体的相对坐标。这个相对坐标 是以原先物体之间在世界坐标的距离决定的。一个位置Q1,1,1的物体 和一个0,0,0位置的物体E 他们之间距离永远是根号3。但是位置1,1,1的物体放大2倍以后,物体最终位置 = 父物体的转换矩阵之积。这时候为了要让E相对A不变,所以E只好变成0。5 0。5 0。5
#6
3楼说的好像挺有道理,5楼讲的也对。
直观上理解,scale表示缩放。不仅仅只是物体大小发生了变化,物体自身坐标系表示的长度也发生的变化。父物体的scale变为(2,2,2)后,父物体坐标系中在x,y,z三个方向表示的长度都发生了变化。
即 在三个维度上 在父物体坐标系中的1长度 = 世界坐标系中的 2 长度,
“因此A的Position变为(-0.5,-0.5,-0.5)”,这个-0.5是父物体坐标系中的长度,按照比例换算,在世界坐标系中的长度为-1.0。
如果父物体的scale为(2,1,1),即表示只在x轴方向有缩放,那么A的Position应该变为(-0.5,-1,-1)。
直观上理解,scale表示缩放。不仅仅只是物体大小发生了变化,物体自身坐标系表示的长度也发生的变化。父物体的scale变为(2,2,2)后,父物体坐标系中在x,y,z三个方向表示的长度都发生了变化。
即 在三个维度上 在父物体坐标系中的1长度 = 世界坐标系中的 2 长度,
“因此A的Position变为(-0.5,-0.5,-0.5)”,这个-0.5是父物体坐标系中的长度,按照比例换算,在世界坐标系中的长度为-1.0。
如果父物体的scale为(2,1,1),即表示只在x轴方向有缩放,那么A的Position应该变为(-0.5,-1,-1)。
#1
好吧,,貌似我自己的问题自己解决了
物体A变为物体B后,不仅大小发生了成比例的变化,而且在B的坐标系中的位置也会与最初A在世界坐标系中的位置不一样,也就是看似A物体没有动,其实A中心点的位置已经变化了,成为B的子物体之后,A的世界坐标系就变成了B。
这是我自己的理解,不知道对不对,还希望看到这个问题的大神能帮忙解决一下。小女子在此先献上十万分的感谢。
物体A变为物体B后,不仅大小发生了成比例的变化,而且在B的坐标系中的位置也会与最初A在世界坐标系中的位置不一样,也就是看似A物体没有动,其实A中心点的位置已经变化了,成为B的子物体之后,A的世界坐标系就变成了B。
这是我自己的理解,不知道对不对,还希望看到这个问题的大神能帮忙解决一下。小女子在此先献上十万分的感谢。
#2
#3
是不是可以理解为当B的scale变成2之后,它的物体坐标系也被拉伸了2倍
#4
怎么解决的呢?
#5
逮住女程序员一只。好久不来CSDN了。。。
割================================
楼主的理解是错误的。不是说缩放了以后物体的中心点变了。不信你把B放0,0,0 对他缩放2,把A放上去,依然是你看到的结果。
所谓的坐标系,坐标系的转换。以及为什么B缩放了2倍以后 A放上去变成缩放值0。5。
这是因为为了保持坐标变换时,物体不会因为改变父子关系而移动,unity会转换这个过程。好吧,这都是废话。但是由于这个初衷,所以为了让他看起来一致,所以是这样的:
我先解释缩放值:物体最终表现 = 父物体的转换矩阵之积。 所以1= 2*0.5.
那么所谓的坐标为什么变成0.5 0.5 0.5呢.还是之前的初衷导致的。因为父子关系的变更,物体的坐标要从世界坐标转换到父物体的相对坐标。这个相对坐标 是以原先物体之间在世界坐标的距离决定的。一个位置Q1,1,1的物体 和一个0,0,0位置的物体E 他们之间距离永远是根号3。但是位置1,1,1的物体放大2倍以后,物体最终位置 = 父物体的转换矩阵之积。这时候为了要让E相对A不变,所以E只好变成0。5 0。5 0。5
割================================
楼主的理解是错误的。不是说缩放了以后物体的中心点变了。不信你把B放0,0,0 对他缩放2,把A放上去,依然是你看到的结果。
所谓的坐标系,坐标系的转换。以及为什么B缩放了2倍以后 A放上去变成缩放值0。5。
这是因为为了保持坐标变换时,物体不会因为改变父子关系而移动,unity会转换这个过程。好吧,这都是废话。但是由于这个初衷,所以为了让他看起来一致,所以是这样的:
我先解释缩放值:物体最终表现 = 父物体的转换矩阵之积。 所以1= 2*0.5.
那么所谓的坐标为什么变成0.5 0.5 0.5呢.还是之前的初衷导致的。因为父子关系的变更,物体的坐标要从世界坐标转换到父物体的相对坐标。这个相对坐标 是以原先物体之间在世界坐标的距离决定的。一个位置Q1,1,1的物体 和一个0,0,0位置的物体E 他们之间距离永远是根号3。但是位置1,1,1的物体放大2倍以后,物体最终位置 = 父物体的转换矩阵之积。这时候为了要让E相对A不变,所以E只好变成0。5 0。5 0。5
#6
3楼说的好像挺有道理,5楼讲的也对。
直观上理解,scale表示缩放。不仅仅只是物体大小发生了变化,物体自身坐标系表示的长度也发生的变化。父物体的scale变为(2,2,2)后,父物体坐标系中在x,y,z三个方向表示的长度都发生了变化。
即 在三个维度上 在父物体坐标系中的1长度 = 世界坐标系中的 2 长度,
“因此A的Position变为(-0.5,-0.5,-0.5)”,这个-0.5是父物体坐标系中的长度,按照比例换算,在世界坐标系中的长度为-1.0。
如果父物体的scale为(2,1,1),即表示只在x轴方向有缩放,那么A的Position应该变为(-0.5,-1,-1)。
直观上理解,scale表示缩放。不仅仅只是物体大小发生了变化,物体自身坐标系表示的长度也发生的变化。父物体的scale变为(2,2,2)后,父物体坐标系中在x,y,z三个方向表示的长度都发生了变化。
即 在三个维度上 在父物体坐标系中的1长度 = 世界坐标系中的 2 长度,
“因此A的Position变为(-0.5,-0.5,-0.5)”,这个-0.5是父物体坐标系中的长度,按照比例换算,在世界坐标系中的长度为-1.0。
如果父物体的scale为(2,1,1),即表示只在x轴方向有缩放,那么A的Position应该变为(-0.5,-1,-1)。