快速导航:   教程资源  | 经典范例  | 友情链接  | 联系我们  | 官方微博
登陆 | 注册

 flash 3d 研究所
flash3d 研究所 pv3d 教程 研究所小贴士: 翻转法线的最简单的方法就是.scale=负数,但那样以后世界就颠倒了。










最近更新:
● wan925446570阁下在讨论区里 回复“怎么配置away3d 4.0运行环境啊?...”(15:12:45)
● wan925446570阁下在讨论区里 回复“怎么配置away3d 4.0运行环境啊?...”(10:01:38)
● DDM君阁下在讨论区里 回复“怎么配置away3d 4.0运行环境啊?...”(19:07:43)
浏览主题:《鼠标获取空间坐标的基础 射线和平面相交》的问题

《鼠标获取空间坐标的基础 射线和平面相交》的问题
ericvan76 (2009-07-05 19:38:33)

我按照教程做的,点是能取到,但是有个奇怪的问题:当这个平面有个位移的时候,取出来的点就不在平面上,而且挺有规律。

比如说:

XOY平面,Z位移为0,取出来的点是对的。
但如果Z位移为200,取出来的点的Z坐标就是-200,
如果当Z位移为-200,取出来的点的Z坐标就是200,

好奇怪啊,有没有其他同学也遇到同样问题?





flash 3d 研究所
(2009-07-07 09:23:22)
嗯?怎么会刚好相反呢?
是移动的plane3d这个数学平面吗?
另外,试一试把平面的法线反向,看看有什么结果呢,比如new Number3D(0,-1,0)
还有,
plane3d.setNormalAndPoint(法线向量,点);
后面那个‘点’的Mumber3D参数,决定了平面的位置哦



flash 3d 研究所
(2009-07-07 11:02:28)
DDM你提醒我了,我是用三个点来确定平面的,有没有可能是法线反了?我试试看


flash 3d 研究所
(2009-07-07 11:33:13)
果然如你所说,将plane3D 反向就对了。可还是不知道原因。

我的平面plane是由初始平面(XOY)平移转换来的。我先在初始平面上取三个点(0,0,0), (100,0,0), (0,100,0),然后分别
Matrix3D.multiplyVector(plane.world, p0);
Matrix3D.multiplyVector(plane.world, p1);
Matrix3D.multiplyVector(plane.world, p2);

然后用这三个点来生成plane3D。
可就是不知道为什么是反的?



flash 3d 研究所
(2009-07-08 09:25:51)
确实是很奇怪的事情哈,暂时也还是想不到具体原因呢。
不过为什么要用multiplyVector呢?仅仅是竖着的平面平移而已呢?

您一定是用这个方法生成的吧,fromThreePoints( p0:*, p1:*, p2:* ),应该就是这里的问题。


flash 3d 研究所
(2009-07-08 13:04:10)
我说漏了,不只是平移,还有旋转。

我也觉得问题出在fromThreePoints里面,三个点确立平面,应该可以是有两个不同法向的,所以我想是否可以把三个点的顺序反一下,不过换过来换过去,还是一样,看来是fromThreePoints有缺陷。


flash 3d 研究所
(2009-07-09 09:14:57)
对啊,三个点确实是不能确定平面的朝向呢。哈哈,大发现~


flash 3d 研究所 Fighting
(2010-12-03 17:02:32)
学习啦


评论人:
邮   箱: (填入邮箱,博客地址均可)

内   容: (广告和垃圾内容可能会被删除,望理解)
链接地址

验证码:(为防止机器人骚扰,请麻烦输入验证码^_^)
  

(目前需登陆方可发表)


不想添加了