As3 Flash: свойство 3d-сетки
Ниже я специально создал тестовый скрипт: вы можете увидеть его вживую на http://www.parele.com/plane.html. Весь исходный код приведен ниже, я пытаюсь изменить сетку... пожалуйста, обратите внимание: я хочу изменить материал из моей модели сетки, другого цвета, любой цвет не создает новую плоскость, так как этот пример является примером, чтобы проверить это, а не мой настоящий проект хобби, любые файлы или информацию, необходимую я с радостью предоставлю.. Я был на этом для полный более 20 часов застрял здесь, и это убивает меня
import away3d.containers.Scene3D;
import away3d.containers.View3D;
import away3d.containers.ObjectContainer3D;
import away3d.debug.AwayStats;
import away3d.entities.Mesh;
import away3d.containers.ObjectContainer3D;
import away3d.loaders.Loader3D;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.MouseEvent;
import away3d.*;
import away3d.materials.ColorMaterial;
import away3d.materials.TextureMaterial;
import away3d.textures.BitmapTexture;
import sunag.animation.AnimationTarget;
import sunag.events.SEAEvent;
import sunag.sea3d.SEA3D;
import away3d.materials.methods.*;
import away3d.primitives.*;
import away3d.textures.*;
import away3d.utils.*;
import away3d.events.*;
[SWF(width = "955",height = "600",frameRate = "50")]
var view:View3D;
var scene:Scene3D;
var sea3d:SEA3D;
var _container:ObjectContainer3D = new ObjectContainer3D();
[Embed(source = "Models/plane.sea",mimeType = "application/octet-stream")]
var homepage:Class;
stage.stageFocusRect = false;
stage.showDefaultContextMenu = false;
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
scene = new Scene3D();
view = new View3D(scene);
view.backgroundColor = stage.color;
view.antiAlias = 4;
var dat:BitmapData = new BitmapData(256, 256, false, WHATEVERCOLOUR);
var mMaterial = new TextureMaterial(new BitmapTexture(dat));
scene.addChild(_container);
addChild(view);
sea3d = new SEA3D();
view.blendMode = BlendMode.NORMAL;
sea3d.addEventListener(SEAEvent.COMPLETE, onComplete);
sea3d.loadBytes(new homepage());
function onEnterFrame(e:Event):void
{
var body1:Mesh = sea3d.getMesh("body");
body1.material = mMaterial;
view.render();
}
function onComplete(e:SEAEvent):void
{
view.camera = sea3d.getCamera("Camera001");
stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
scene.addChild(sea3d.container);
}
1 ответ
Я считаю, что это то, что вы ищете: SubMeshes
Сетка, которую вы извлекаете из модели, обычно состоит как минимум из SubMesh, но может содержать несколько. Изменение Материала в этом "корневом" объекте Mesh не распространяется на его SubMeshes. Вам нужно перебрать его SubMeshes и изменить их материал.
НТН.