游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1461|回复: 2

关于3D平行光投影问题

[复制链接]

3

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2006-3-17 10:46:00 | 显示全部楼层 |阅读模式
问题:  
如果平行光的向量是(-1  -1  -1)        要把一个三角形面投影到XZ平面上      采用求三角形面三个投影顶点的方法,再画出投影(影子).   
我看到一个程序中这样写的  :  
x=vertex.x+(vertex.y)*direction.x          vertex.x,vertex.y是面顶点的原坐标      direction.x是光的单位向量(-1/sqrt(3))    x是投影后的坐标    这个公式怎么也想不通    我推过,但怎么也推不出,谁能帮忙说明一下呢?

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2006-3-18 00:52:00 | 显示全部楼层

Re:关于3D平行光投影问题

因为投影到 XZ 所以平面方程为 Y=0
通过直线的参数方程得知 y-y0=n*t,因为n=-1所以t=y0-y
满足直线和平面的方程就是投影点,所以 x-x0=mt,带入上面的t,得x=y-y0+x0,因为y=0,所以x=x0-y0.不过跟你的代码不一样。

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2006-3-18 17:03:00 | 显示全部楼层

简单,

利用光学原理,或几何原理都能解释.

不就是 x=vertex.x+(vertex.y)*direction.x 吗?

楼主,你说"direction.x是光的单位向量(-1/sqrt(3))"是吧?
你错了 !!! !!!

在这里,direction.x 应该是方向系数,
vertex.y增加 1的时候,x增加 -1,
所以 direction.x = -1/1 = -1 才是正确的.

如果真的是"direction.x是光的单位向量(-1/sqrt(3))",
那么画面就不是真实的画面了,影子的长度变短了.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 22:41

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表