1

我正在使用 Away3D 中的球形电影查看器,当我将 VideoMaterial 纹理应用于 3D 图元时遇到问题。视频看起来很像素化,就像它被缩放或被极大地压缩一样。当我从视频中应用单个静止图像的 BitmapMaterial 时,它看起来很好,所以我认为视频的分辨率不是问题。

我发现 [this discussion][1] 通过在调用构造函数时指定“fixedHeight”和“fixedWidth”来提出解决方案,但这些争论似乎没有效果,我也无法在 API中找到它们。我确实看到了一些名为“lockH”和“lockW”的东西,[在 API][3] 中,但我似乎也没有任何效果。

这是构造 VideoMaterial 的代码。

//basic intro setup stuff and then...
var videoURL:String = "assets/clip.flv";
this.primitive = new Sphere({material:"blue:#cyan", radius:50000, rotationX:100, segmentsW:30, segmentsH:30});
//more code to setup the rest of the scene, and implement some texture switching, then...
this.primitive.material = new VideoMaterial({file:videoURL, lockH:1000, lockW:2000});

作为参考,我以这个示例为起点,在 Eclipse Indigo 中使用 Away3D 3.6 和 Flex 4.5.1。

[1]: [3]:

4

2 回答 2

2

要消除像素化,请设置smoothtrue. 这显然不会增加分辨率,但它会激活抗锯齿,就像smoothing=true在原生BitmapData上一样(在内部这正是它所做的。)

如果您要在用作全屏视图环境的球体上使用视频或位图材质,您将需要具有真正高分辨率的视频/位图。在任何时候,您最多只能看到球体表面的三分之一,并且它覆盖的屏幕区域宽度超过 1000 像素,因此这告诉我您的视频至少需要 3000 像素宽,否则遭受拉伸问题。

于 2011-08-27T08:57:25.170 回答
0

我不敢说这是“正常的”。它主要与动作脚本代码的效率以及缺乏硬件加速和抗锯齿有关。在没有质量损失的情况下将视频转换为基元基本上是不可能的,因为坦率地说,动作脚本并不是真正为这种密集计算而制作的。

话虽如此,但还是有希望的。有一个新的 Flash Player“很快”问世(或者我听说过),它将有一个基本的硬件加速 3D 渲染器(代号“Molehill”),Away3d 和其他 3d 引擎(如 Alternativa)已经在努力实施。这意味着视频将被消除锯齿,因此应该是流畅的,但我无法确认这一点,因为我从未尝试过。

于 2011-08-12T02:40:56.370 回答