[PV3D]控制DAE模型的alpha值與滑鼠互動

LINEで送る
[`evernote` not found]

要在FLASH中玩3D看來還是要靠PV3D
不過即使真的導入DAE模型
要控制他也不是一件很直覺的事情
而且DAE模型最好還是一張貼圖搞定
不然整個FLASH就會慢到要人抓狂!!!

[DEMO]MOVEROUSE會變透明,MOUSEOUT後回復

奇怪,沒辦法貼在文章中….
是PV3D的關係嗎!?

算了…看程式碼就好了^^”

package {
	import flash.display.*;
	import flash.events.*;
	import org.papervision3d.materials.utils.MaterialsList;
	import org.papervision3d.objects.parsers.DAE;
	import org.papervision3d.materials.*;
	import org.papervision3d.events.*;
	import org.papervision3d.view.BasicView;
 
	import caurina.transitions.Tweener;
 
	public class LoadModel extends Sprite{
		private var view		:BasicView;
		private var dae			:DAE;//DAE物件
 
		public function LoadModel(){
			init3DEngine();
			init3DObject();
		}
		private function init3DEngine():void{
			view = new BasicView(0, 0, true, true, "Target");
			view.camera.y = 200;
			this.addChild(view);
			this.addEventListener(Event.ENTER_FRAME, onEventRender3D);
		}
		private function init3DObject():void{
			dae = new DAE(true, "dae", true);
			dae.load("dae/shop2.dae");
			dae.y = -250;
			dae.scale = 100;
			dae.addEventListener(FileLoadEvent.ANIMATIONS_COMPLETE, daeComplete);
			view.scene.addChild(dae);
		}
		private function daeComplete(e:FileLoadEvent) {
			dae.getMaterialByName("shop2").interactive = true;
			//在shop2.dae中的material標籤
			dae.getChildByName("COLLADA_Scene").getChildByName("Mesh_Object").addEventListener(InteractiveScene3DEvent.OBJECT_OVER, daeOverHandler);
			dae.getChildByName("COLLADA_Scene").getChildByName("Mesh_Object").addEventListener(InteractiveScene3DEvent.OBJECT_OUT, daeOutHandler);
 
			dae.useOwnContainer = true;
			dae.getChildByName("COLLADA_Scene").getChildByName("Mesh_Object").useOwnContainer = true;
		}
		private function daeOverHandler(e:InteractiveScene3DEvent) {
			Tweener.addTween(dae, {alpha:0.5 , time:0.5});
		}
		private function daeOutHandler(e:InteractiveScene3DEvent) {
			Tweener.addTween(dae, {alpha:1 , time:0.5});
		}
		private function onEventRender3D(e:Event):void{
			dae.rotationY += 2;
			view.singleRender();
		}
	}
}

15 則迴響於《[PV3D]控制DAE模型的alpha值與滑鼠互動

  1. 謝謝您!!
    我已經解決問題了~
    問題出在getChildByName(“Mesh_Object”)中的Mesh_Object
    我把它改成bottle就可以互動了,
    請問getChildByName(“Mesh_Object”)這是什麼意思?

  2. 我把載入的DAE檔案用文字編輯器打開後,
    尋找Material標籤,
    material id=”bottleMaterial” name=”bottleMaterial”>
    instance_effect url=”#bottleMaterial-fx”/>
    /material>
    所以是把shop2換成bottleMaterial嗎?
    可是我還是只有載入的DAE檔案在旋轉,
    並沒有與材質互動,
    麻煩您了!!

  3. 我用文字編輯器打開DAE檔案,
    並且搜尋Material標籤

    所以是要把shop2換成bottleMaterial嗎?
    可是還是只有載好的DAE在旋轉沒有透明的效果~
    麻煩您了!!

  4. 可是我有使用DAE檔案,並且有成功的載入!!
    載入之後也有旋轉,但是就是沒有辦法與3D物件互動變成透明.
    還有出現我第一次留言的錯誤~
    dae.getMaterialByName(“shop2”).interactive = true;
    我想要知道的是上面的shop2是Material標籤裡面的ID嗎?

    • 恩 用文字編輯器打開DAE檔
      搜尋Material可以看到妳的Material直
      再把shop2用該值取代掉
      因為我只有用一張圖作素材 所以只有一個Material

  5. 我試了一下,好像是這行有錯誤,
    dae.getMaterialByName(“shop2”).interactive = true;
    請問可以詳細的告訴我shop2是怎麼來的嗎?
    亦或著可以寄給我DAE檔案嗎?
    麻煩您了!!

    • ㄜ 所以你沒有用DAE檔?
      不過抱歉我沒辦法給你這個DAE耶
      因為他是公司正式網站要用的東西
      你可上網找找應該有免費的測試用檔案可以下載

  6. 我想請問一下
    為什麼會出現以下錯誤:
    TypeError: Error #1009: 無法存取 Null 物件參考的屬性或方法。
    at LoadModelUseMaterialsList/daeComplete()
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at org.papervision3d.objects.parsers::DAE/ onParseAnimationsComplete()
    at org.papervision3d.objects.parsers::DAE/buildScene()
    at org.papervision3d.objects.parsers::DAE/onParseComplete()
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at org.ascollada.io::DaeReader/onImagesComplete()
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at org.ascollada.core::DaeDocument/readNextImage()
    at org.ascollada.core::DaeDocument/onImageComplete()

回應已關閉。