蒙皮网格着色器的均匀顶点位移(动画轮廓,Three.js)

时间:2014-04-23 13:24:35

标签: opengl-es three.js glsl webgl

我认为我已经解决了Three.js中网格渲染边框/轮廓的实现,这是许多游戏用于突出显示对象/角色的技术。

暗黑破坏神1和3例如 Diablo 3

Here are detailsdemo of my solution

现在还有待完成的是动画网格(用于角色等)。问题是,蒙皮网格使用顶点着色器进行动画处理,我还使用着色器沿着法线缩放(移位)网格。这可能非常简单但不幸的是我的数学技能几乎不存在。


问题

为了让网格物体在着色器中按比例放大并设置动画,下面是我认为需要合并的两个方程式:

来自蒙皮着色器:

mvPosition = modelViewMatrix * skinned
gl_Position = projectionMatrix * mvPosition

从置换着色器:

mvPosition = modelViewMatrix * vec4( position + normal * offset, 1.0 )
gl_Position = projectionMatrix * mvPosition


演示

更新(使用GoodGuy'等式): 这是 full code and demo on jsfiddle (javascript) 在这里你可以找到 shader code itself (glsl)。

内图是常规的蒙皮动画,轮廓是新的等式,它还不太合适。

1 个答案:

答案 0 :(得分:4)

感谢WestLangley和GuyGood,以下是解决方案:

http://jsfiddle.net/Nv7Up/

mvPosition = modelViewMatrix * (vec4( skinned.xyz + normal * offset, 1.0 ))

一个技术问题可能是法线未更新。有关详细信息,请阅读原始帖子下方的讨论主题。

r73更新:http://jsfiddle.net/frh2d84d/4/

相关问题