【问题标题】:AS#3 changing material TexturesAS#3 改变材质纹理
【发布时间】:2012-11-29 11:18:20
【问题描述】:

我似乎找不到解决方案,反正我基本上是在尝试使用带有 Flash 的 Away3d 引擎向 3D 模型添加新的动态纹理

   var myImage:BitmapData = new BitmapData(256, 256, true,0xFFFFFFFF);

   // i cant seem to reference this to my 3D model in the example: Myevent(enter frame):

   myModel.material = new TextureMaterial(new BitmapTexture(myImage))

我按照上述方法尝试了不同的方法,我检查了 away3d 文档,但找不到适合我目前情况的类似方法:

我正在使用最新的 Away3d 库和 flash player 11...我所有的模型都可以正常工作并加载原始嵌入式材质纹理,我只是想将它们更改为我动态创建的位图或纹理

【问题讨论】:

  • 你遇到了什么错误?
  • 该死,我以为你的答案被困了一天,这让我发疯了....我没有错误,只是我的材料没有改变,我尝试了 render();和更新方法......我不知道没有任何工作

标签: actionscript-3 flash flash-cs5 away3d


【解决方案1】:

看这里:

https://github.com/away3d/away3d-tutorials-fp11/blob/master/tutorials/materials/basic_shading/src/Basic_Shading.as

他们使用 Away3D 的 Cast 实用程序类来创建 BitmapTexture 对象,他们还添加了一堆不同的纹理贴图 - 希望这会有所帮助

** 编辑 --- 本教程有效 **

添加

public bmt:BtiMapTexture;

....
private function initMaterials():void {
    this.bmt = new BitmapTexture(new BitmapData(256,256, true, 0x222277FF));
    sphereMaterial = new TextureMaterial(Cast.bitmapTexture(this.bmt));
    sphereMaterial.specularMap = Cast.bitmapTexture(this.bmt);
    sphereMaterial.lightPicker = lightPicker;
}

我得到了一个漂亮的蓝色球体

【讨论】:

  • 不,这根本没有帮助,该示例只是加载图像(jpegs)以添加到网格或对象中,我没有任何 jpegs 我只是想让我的模型材料更改为我动态创建的位图......
  • var myImage:BitmapData = new BitmapData(256, 256, true,0xFFFFFFFF);这是我想要在我的模型上的图像
  • 您需要它作为纹理还是可以使用 ColorMaterial 来代替?
  • 它必须是纹理材质,我尝试使用上面的,再次没有错误,但也没有发生任何事情......不同的是我有一个带有纹理的嵌入式模型,然后我试图在运行时替换它
  • 我用我上面发布的内容来处理教程代码 - 看看你有什么不同,看看它是否修复它 - 你可能必须使用 Cast.bitmapTexture()
【解决方案2】:

我的解决办法是:

var mesh:Mesh = 'the mesh for changing'
for each (var item:SubMesh in mesh.subMeshes) {
item.material = null;
}
mesh.material = new ColorMaterial(0xFF00FF); 

【讨论】:

    猜你喜欢
    • 2012-11-15
    • 2013-11-11
    • 2021-06-24
    • 2014-10-04
    • 2018-03-18
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多