Actionscript 3 阶段3D是否可以在所有其他对象后面绘制对象,而不考虑实际距离?
我正在Stage3D制作一个3D空间游戏,希望在所有其他物体后面画一个星星的区域。我想我遇到的问题是,涉及的距离非常长。如果我的星星真的比其他物体远得多,我就必须将它们缩放到无法正确渲染的程度——超过一定的大小,它们的脸似乎会闪烁。这也发生在我的行星网格上,当缩放到必要的大小时(12000-100000个单位)。 我在平面纹理上渲染星星,指向相机。只要它们没有放大太多,渲染效果就会很好,尽管很明显,它们会在更远的其他对象前面渲染。 我尝试了各种depthTestModes(context3dcomaremode.LESS、context3dcomaremode.GREATER和所有其他模式),并在z缓冲区中包含和排除网格,以便仅在星星出现的地方没有其他像素时才渲染星星,运气不佳。Actionscript 3 阶段3D是否可以在所有其他对象后面绘制对象,而不考虑实际距离?,actionscript-3,stage3d,depth-testing,Actionscript 3,Stage3d,Depth Testing,我正在Stage3D制作一个3D空间游戏,希望在所有其他物体后面画一个星星的区域。我想我遇到的问题是,涉及的距离非常长。如果我的星星真的比其他物体远得多,我就必须将它们缩放到无法正确渲染的程度——超过一定的大小,它们的脸似乎会闪烁。这也发生在我的行星网格上,当缩放到必要的大小时(12000-100000个单位)。 我在平面纹理上渲染星星,指向相机。只要它们没有放大太多,渲染效果就会很好,尽管很明显,它们会在更远的其他对象前面渲染。 我尝试了各种depthTestModes(context3dco
有人知道我是如何做到这一点的吗?或者,更好的是,有人知道为什么超过一定大小的网格无法正确渲染?有没有我不知道的任意上限?我不知道Stage3D,我在这里用OpenGL语言,但绘制背景/天空框的通常方法是近距离绘制背景,不远,先绘制背景,或者在绘制背景时禁用深度缓冲区写入(如果它本身不需要深度缓冲)或在绘制背景后和常规场景之前清除深度缓冲 你的行星闪烁可能是由于缺乏深度缓冲分辨率;如果是这样,你必须在两者之间做出选择
你应该用椋鸟,它可以用
http://www.flare3d.com/blog/2012/07/24/flare3d-2-5-starling-integration/您必须了解投影和顶点着色器输出是如何完成的。 顶点着色器输出有四个组件:x、y、z、w。 由此计算像素坐标: x'=x/w y'=y/w z'=z/w z'是在z缓冲区中结束的。
因此,只需将z=w*值放在顶点着色器的末尾,就可以输出任何常量值。只需将值放在0.999,就可以了!您的常规无深度测试将起作用。感谢您的建议。当我增加近平锥平面距离时,问题会稍微减轻。我没有想到深度缓冲区具有分辨率-I可能会尝试在网格后退时更快地减少网格上的多边形数量,看看这是否能完全修复它。我只想补充一点,这条建议真的很有用。我现在在几个单独的循环中绘制各种对象-那些始终在其他较近的对象后面的对象,而不将它们添加到z缓冲区,以及对象最后是透明。效果很好,看起来也不错!再次感谢。说我贪吃是为了惩罚,但当我开始这个3D项目时,我真的很想弄清楚事情是如何“在引擎盖下”运作的。现在,这更像是一种冷酷的决心。