首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自己实现光线投射的phong照明

自己实现光线投射的phong照明
EN

Stack Overflow用户
提问于 2013-01-20 07:27:21
回答 1查看 560关注 0票数 0

我正试着用java从头开始写一个程序,用光线投射技术和phong照明来渲染一个球体,但我有点迷茫。

我理解phong方程系数背后的概念,但我不知道如何获得向量值,以及所有这些与光线投射的关系

假设我想渲染屏幕中间的球体,我知道它的位置和半径,所以(cx,cy,r)。现在我到底该从哪里开始呢?我如何准确地得到向量值?我的想法如下(伪代码)

代码语言:javascript
复制
int cx = window width/2
int cy = window height/2
int r = 30;
for(i = 0 -> window height) {
    for(j = 0 -> window width) {
        if( (j-cx)^2 + (i-cy)^2 < r^2) {
            //point inside
            Color c = phong(arguments..)
            draw pixel j,i with color c
        }

    }
}

但我不知道这是否正确,如果是正确的,我如何获得向量值,对于初学者来说,法线?

你能给我指出正确的路吗?我已经用谷歌搜索了很多次,都没有成功,提前谢谢你

EN

回答 1

Stack Overflow用户

发布于 2013-02-18 03:36:30

用于计算法线的向量通常来自真实几何对象的镶嵌(近似)。所以你把球体分成,比如说,三角形。然后每个三角形(p1,p2,p3)都有自己的法向量((p2-p1)×(p3-p1) )。

phong着色方法是一种插值方法,然后(理想情况下)在线条上进行模糊处理,从而得出绘制的是三角形而不是真正的球体的事实。不过,它对边上的边角没有帮助。:(

对于细分,一种方法是使用Bezier surface patches近似球体,然后可以将其细分为适当的小尺寸并简化为三角形。My question over here探索做这项工作来绘制茶壶(主要是旋转曲面,与球体没有什么不同)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14420021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档