Opengl es 蒙皮网格着色器的均匀顶点置换(动画轮廓,Three.js)

Opengl es 蒙皮网格着色器的均匀顶点置换(动画轮廓,Three.js),opengl-es,three.js,glsl,webgl,Opengl Es,Three.js,Glsl,Webgl,我想我已经在Three.js中解决了在网格上渲染边界/轮廓的实现,这是许多游戏用来突出显示对象/角色的技术 例如暗黑破坏神1和3 和 现在需要做的是动画网格(用于角色等)。问题是,蒙皮网格使用顶点着色器设置动画,我还使用着色器沿法线缩放(置换)网格。这可能很简单,但不幸的是,我的数学技能几乎不存在 问题 因此,要在着色器中放大网格并设置动画,以下是我认为需要合并的两个方程: 从蒙皮着色器: mvPosition = modelViewMatrix * skinned gl_Position

我想我已经在Three.js中解决了在网格上渲染边界/轮廓的实现,这是许多游戏用来突出显示对象/角色的技术

例如暗黑破坏神1和3

现在需要做的是动画网格(用于角色等)。问题是,蒙皮网格使用顶点着色器设置动画,我还使用着色器沿法线缩放(置换)网格。这可能很简单,但不幸的是,我的数学技能几乎不存在


问题 因此,要在着色器中放大网格并设置动画,以下是我认为需要合并的两个方程:

从蒙皮着色器:

mvPosition = modelViewMatrix * skinned
gl_Position = projectionMatrix * mvPosition
从置换着色器:

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

演示 更新(使用古德盖方程): 这是(javascript)代码。
您可以在这里找到(glsl)。


内部人物是规则蒙皮动画,轮廓是新的方程式,但还不太合适。

多亏了WestLangley和GuyGood,以下是解决方案:

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


r73的更新:

mvPosition=modelViewMatrix*(蒙皮+vec4(位置+法线*偏移,1.0));对我来说似乎很好,不是吗?@GuyGood似乎是这样:)你真棒,非常感谢!我已经在找一个自由职业者来帮我了D我会测试它,然后公布结果。@GuyGood仔细检查,动画似乎缩小了,好像运动范围不知何故缩小了。将偏移值设置为零时可以看到它。知道怎么修吗?我会更新这个例子。这就是你要找的吗?
mvPosition = modelViewMatrix * (vec4( skinned.xyz + normal * offset, 1.0 ))