Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 阶段3D是否可以在所有其他对象后面绘制对象,而不考虑实际距离?_Actionscript 3_Stage3d_Depth Testing - Fatal编程技术网

Actionscript 3 阶段3D是否可以在所有其他对象后面绘制对象,而不考虑实际距离?

Actionscript 3 阶段3D是否可以在所有其他对象后面绘制对象,而不考虑实际距离?,actionscript-3,stage3d,depth-testing,Actionscript 3,Stage3d,Depth Testing,我正在Stage3D制作一个3D空间游戏,希望在所有其他物体后面画一个星星的区域。我想我遇到的问题是,涉及的距离非常长。如果我的星星真的比其他物体远得多,我就必须将它们缩放到无法正确渲染的程度——超过一定的大小,它们的脸似乎会闪烁。这也发生在我的行星网格上,当缩放到必要的大小时(12000-100000个单位)。 我在平面纹理上渲染星星,指向相机。只要它们没有放大太多,渲染效果就会很好,尽管很明显,它们会在更远的其他对象前面渲染。 我尝试了各种depthTestModes(context3dco

我正在Stage3D制作一个3D空间游戏,希望在所有其他物体后面画一个星星的区域。我想我遇到的问题是,涉及的距离非常长。如果我的星星真的比其他物体远得多,我就必须将它们缩放到无法正确渲染的程度——超过一定的大小,它们的脸似乎会闪烁。这也发生在我的行星网格上,当缩放到必要的大小时(12000-100000个单位)。 我在平面纹理上渲染星星,指向相机。只要它们没有放大太多,渲染效果就会很好,尽管很明显,它们会在更远的其他对象前面渲染。 我尝试了各种depthTestModes(context3dcomaremode.LESS、context3dcomaremode.GREATER和所有其他模式),并在z缓冲区中包含和排除网格,以便仅在星星出现的地方没有其他像素时才渲染星星,运气不佳。
有人知道我是如何做到这一点的吗?或者,更好的是,有人知道为什么超过一定大小的网格无法正确渲染?有没有我不知道的任意上限?

我不知道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项目时,我真的很想弄清楚事情是如何“在引擎盖下”运作的。现在,这更像是一种冷酷的决心。