我正在研究Away3D& A中的球形电影观众。将VideoMaterial纹理应用于3D基元时遇到问题。该视频显示像素化严重,就像它被缩放或大幅压缩一样。当我从视频应用单个静止图像的BitmapMaterial时,它显得很好,所以我认为视频的分辨率不是问题。
我发现[这个讨论] [1]通过指定“fixedHeight”& amp;当我调用构造函数时,“fixedWidth”,但这些争论似乎没有效果,I can't find them in the 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});
作为参考,我正在建立this example作为起点,我正在使用Away3D 3.6& Eclipse Indigo中的Flex 4.5.1。
[1]: [3]:
答案 0 :(得分:2)
要摆脱像素化,请将smooth
设置为true
。这显然不会提高分辨率,但它会激活抗锯齿,就像本地smoothing=true
上BitmapData
所做的那样(内部就是这样做。)
如果要在全屏视图中用作环境的球体上使用视频或位图材质,则需要具有真正高分辨率的视频/位图。在任何时候,您最多只能看到球体表面的三分之一,并且它覆盖了宽度超过1000像素的屏幕区域,因此告诉我您的视频需要至少3000像素宽,因为它不是忍受伸展问题。
答案 1 :(得分:0)
我不敢说这是'正常'。它主要与actionscript代码的效率以及缺乏硬件加速和抗锯齿有关。基本上不可能将视频转换为原始,而在质量上有某种程度的损失,因为坦率地说,动作脚本并不是真的用于这种强烈的计算。
然而,尽管如此,仍有希望。有一个新的Flash Player即将推出“很快”(或者我听说过)将会有一个基本的硬件加速3D渲染器(代号为“Molehill”),Away3d和其他3D引擎(如Alternativa)已经在努力实现。这意味着该视频将被消除锯齿,因此应该顺利,但我无法证实这一点,因为我从未尝试过。