跳到主要內容

PV3DText3DFogEffect

使用PV3D的相量3D文字做的Fog效果
遠一點的文字,加入Blur和變亮
增加距離的層次感
最主要的程式碼是用下方的公式, 計算3D物件與camera的距離
說穿了就是用畢式定理來算距離的
private function calcPointDistanceFromCamera(obj:DisplayObject3D):Number {
var vecX:Number = obj.sceneX - view.camera.x;
var vecY:Number = obj.sceneY - view.camera.y;
var vecZ:Number = obj.sceneZ - view.camera.z;
return Math.sqrt((vecX * vecX) + (vecY * vecY) + (vecZ * vecZ));
}

留言

匿名表示…
原來有z軸也可以用畢氏定理 nice~
milkmidi寫道…
是呀,反正都是三角型,只是看的方向不同
匿名表示…
喔老師這樣說就有懂了
不過像object3D.z = camera.focus * camera.zoom - Math.abs(camera.z);這樣的公式,真的很難想像為什麼用了以後,3D物件就能100%百出現在Flash裡?
不知道是否漏掉甚麼,請問本篇程式碼中
obj.sceneX,obj.sceneY,obj.sceneZ中的sceneX,sceneY,sceneZ是甚麼啊?謝謝!
milkmidi寫道…
像PV3D裡的Plane, 你要做一個轉場後, 馬上接另一個MovieClip裡的動畫,
這時候就需要用這樣的公式, 接起來才會順。
obj3d.sceneX
obj3d.sceneY
指的是該3D物件相對於Flash的座標
透過這個屬性, 就可以幫你將PV3D座標轉換成Flash的座標
而sceneZ
是直接得到該3D物件距離瑩目的值
因為有可能你的3D物件被包了很多層,
透過該屬性就可以直接得到
匿名表示…
奶老師這個回答比剛剛的新聞快報還讓我驚訝 原來就是這個!謝囉