根据《real-time shadow》这本书第二章中的推导,实现了最简单的阴影技术。
planar shadow通过一个投影矩阵将被灯光照射的物体的顶点沿着光线方向投影到接受阴影的平面。
关键的问题是这个投影矩阵怎么得到。
阴影所在平面用下式表示:其中n是法线,d是常量,x是平面上的点。
灯光和被投影的顶点所在的直线用下式来表示:,其中l是光源的位置,v是被投影的顶点,t是系数。
推导过程:
所以最终得到投影到平面上的顶点坐标写成齐次坐标的形式为:
写成矩阵的形式就是
为了在代码中实现,我新加了两个类,分别是Mesh和Program,因为在析构时涉及到删除OpenGL内部的资源的问题,所以如果不处理好拷贝构造和拷贝赋值就会出现问题,所以在没想过好的处理方案之前把他俩都实现成了无法复制的类。
代码已经更新
http://www.eyesourcecode.com/t/58005/1/1
分享到:
相关推荐
《Scale-Based Detection of Corners of Planar Curves.pdf》这篇文章主要介绍了一种基于尺度空间(scale-space)的方法来检测和定位平面曲线上的角点。文章作者Anothai Rattarangsi和Roland T. Chin来自威斯康星...
Unity Planar Reflection平面反射
unity PIDI - Planar Reflections 1.8平面反射插件
《基于平面结构引导的图像补全》 图像补全是一种常见的图像编辑操作,它涉及到用合理合成的内容替换或填充图像中的区域。这项技术被称为图像补全,应用广泛,包括个人照片中不想要对象的移除、电影后期制作,以及...
Unity3D自带的Standard Shader已经包含了平面反射选项,只需选择“Reflection Probe”下的“Planar”模式。 2. **调整反射参数**:通过编辑平面的材质,可以调整反射的质量和效果,包括反射强度、模糊程度、法线...
BaB2S4: Das erste nicht-oxidische Chalkogenoborat mit trigonal-planar und tetraedrisch koordiniertem Bor BaB2S4: Das erste nicht-oxidische Chalkogenoborat mit trigonal-planar und tetraedrisch ...
本文的研究主题是平面二分图的相邻顶点区分适当的边着色问题,特别是当图的最大度数△等于9、10或11时。在组合数学中,图的边着色是指给图的每条边分配一种颜色,以满足特定的条件。研究的目标是确定使相邻顶点通过...
NBS Technical Note 667是关于近场误差测量的误差分析的基础性文章。是Yaghjian1975年在美国NBS工作期间的技术报告。
非常好的平面反射插件!!!
平面变压器是一种特殊的变压器设计,它将传统的立体变压器结构转化为平面布局,从而实现更紧凑、高效的设计。平面变压器在现代电子设备,尤其是高频率和高功率应用中,扮演着至关重要的角色。下面我们将深入探讨平面...
在图论领域,2-平面图(2-Planar Graphs)是一类重要的图结构,它们定义了一种特殊的图绘制方式。一个简单的无向图G=(V, E)被认为是k-平面图,如果它能够在平面上画出,使得每条边最多被交叉k次,相邻的边不相交,且...
7. 平面双栅技术(Planar Double Gate Technologies)是该书的一个重点,详细介绍了基于层沉积的双栅晶体管制造方法,包括非自对准晶体管通过晶圆键合的方法,自对准晶体管通过晶圆键合以及基于悬空通道的方法。...
平面光导电路(Planar Lightwave Circuit, PLC)是这种技术的关键组成部分,用于信号的处理和传输。 平面光导电路是一种集成光学技术,它允许光信号在二维平面上进行传播和处理。这种电路通常由二氧化硅或类似的...
标题中的“行业-电子政务-平面型雪崩光电二极管”表明了这个主题与电子政务领域中的一个特定技术——平面型雪崩光电二极管(Planar Avalanche Photodiode, 简称PAD)有关。在电子政务中,这种器件可能被用于各种数据...
X-Ray Photoelectron Spectral Studies on Planar NiS and NiS P 4 2 2 Chromophores. Single Crystal X-Ray Structural Study on [1,4-Bis(diphenylphosphino-k,P,P’)butane](piperidinecarbodithioato-S,S’)- ...
A novel design of a transverse magnetic (TM)-pass waveguide polarizer based on Si on an X-cut, Y-propagation Ti:LiNbO3 planar waveguide is presented. The eigenvalue functions of such structure have ...
- 如何在Unity中设置光源的阴影属性,例如开启阴影,选择阴影类型(如Planar Shadow),调整阴影分辨率和距离。 - 如何创建和调整平面投影器(Plane Projector),这通常是一个带有特殊Shader的平面,用于捕捉和投射...
var toSVG = require ( 'planar-graph-to-svg' ) var ch = require ( 'convex-hull' ) var points = [ ] for ( var i = 0 ; i < 100 ; ++ i ) { points . push ( [ Math . random ( ) , Math . random ( ) ] ) ...