away3d能直接修改物件的中心點
但PV3D並沒有該屬性, 但能透過以下三種方法達到一樣的效果。
1.用DisplayObject3D多包一層。
將物件加入到該DisplayObject3D, 然後對他做旋轉。
http://wonderfl.net/code/7fbfda83de4c282f304b3f11ef59575a1a10d484
2.直接去修改物件的Vertex3D座標。
http://wonderfl.net/code/b7e4f5b3650731820256cf7fbb3461662e2ec0d8
3.使用as3dmod提供的Pivot來更改。
要先下載as3dmod類別喔。
但PV3D並沒有該屬性, 但能透過以下三種方法達到一樣的效果。
1.用DisplayObject3D多包一層。
將物件加入到該DisplayObject3D, 然後對他做旋轉。
http://wonderfl.net/code/7fbfda83de4c282f304b3f11ef59575a1a10d484
2.直接去修改物件的Vertex3D座標。
http://wonderfl.net/code/b7e4f5b3650731820256cf7fbb3461662e2ec0d8
3.使用as3dmod提供的Pivot來更改。
要先下載as3dmod類別喔。
package { import com.as3dmod.modifiers.Pivot; import com.as3dmod.util.ModConstant; import com.as3dmod.ModifierStack; import com.as3dmod.plugins.pv3d.LibraryPv3d; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.materials.utils.MaterialsList; import org.papervision3d.objects.primitives.Cube; import org.papervision3d.cameras.CameraType; import org.papervision3d.view.BasicView; import flash.events.Event; public class PivotExampleas3dmod extends BasicView { private var do3d:Cube; public function PivotExampleas3dmod() { super(800, 600, true, false, CameraType.TARGET); init3DObject(); startRendering(); } private function init3DObject():void { var _ml:MaterialsList = new MaterialsList( { all:new ColorMaterial() } ); do3d = new Cube(_ml, 200, 200, 200); var stack:ModifierStack = new ModifierStack(new LibraryPv3d(), do3d); var pivot:Pivot = new Pivot( -200, -200, -200); stack.addModifier(pivot); stack.collapse(); scene.addChild(do3d); scene.addChild( new Axes3D()); } protected override function onRenderTick(event:Event = null):void { do3d.rotationY += 2; super.onRenderTick(event); } } } import org.papervision3d.core.geom.*; import org.papervision3d.core.geom.renderables.*; import org.papervision3d.materials.special.*; import org.papervision3d.objects.*; class Axes3D extends DisplayObject3D { public function Axes3D() { var _lines3D:Lines3D = new Lines3D(); var _red :LineMaterial = new LineMaterial(0xff0000); var _green :LineMaterial = new LineMaterial(0x00ff00); var _blue :LineMaterial = new LineMaterial(0x0000ff); var _length :uint = 120; var _lineX :Line3D = new Line3D(_lines3D, _red, 2, new Vertex3D(-_length, 0, 0), new Vertex3D(_length, 0, 0)); var _lineY :Line3D = new Line3D(_lines3D, _green, 2, new Vertex3D(0, -_length, 0), new Vertex3D(0, _length, 0)); var _lineZ :Line3D = new Line3D(_lines3D, _blue, 2, new Vertex3D(0, 0, -_length), new Vertex3D(0, 0, _length)); _lines3D.addLine(_lineX); _lines3D.addLine(_lineY); _lines3D.addLine(_lineZ); addChild(_lines3D); } }
留言
Mytween 1.5的檔案呢?
因為原本的連結已經失效嚕><
突然有急用要用到...感激不盡
http://milkmidi.googlecode.com/files/MyTween1.5.zip
我用您書上看到的第七個範例
MiniCarousel3D
迷你旋轉木馬秀圖效果
請教一下 這個範例是否可以稍微修改一些轉變成 將旋轉的中心加上一個sphere呢?
小弟看了老師的書 試了很久始終無法讓她順利進入旋轉木買的中央 都只能放在旋轉木馬後面...實在沒有辦法解決
煩請奶綠老師解答><
第43行加入以下這行試試
rootNode.addChild(new Sphere(new ColorMaterial(),100))
小弟按照您的建議加上了
rootNode.addChild(new Sphere(new ColorMaterial(),100))
這行
但發現球還是沒辦法在旋轉木買的中央耶?
現在是這樣
o
o
o o
o
但我想要變成這樣的排列^^"
o
o o o
o
這樣有辦法嗎?..因為小弟之前試也是無法將後來加入旋轉木馬的sphere(我是用自己貼材質的) 放在旋轉木馬的中間
奶綠老師抱歉打擾囉><
因為啟用useOwnContainer後, 物件會被放置到最前方, 所以你的中心Sphere也要開啟該屬性,這樣就可以
rootNode.addChild(new Sphere(new ColorMaterial(), 100)).useOwnContainer = true;
請問你在文章中提到的第三個方式「使用as3dmod提供的Pivot來更改」,
我下載了as3dmod類別的壓縮檔,
解開壓縮後,
卻不知道要把哪些檔案複製到D槽裏Classes資料夾裏的什麼地方,
才是正確的路徑呢?
能不能再幫我補充說明一下?
看他的 package 路徑
那個就是資料夾的結構
我看了你的「Flash 3D特效宅急便」後,想用PV3D做出像以下這個網站的立體書效果http://dhips.pixnet.net/blog/post/62901343
想用palne平面物件來做出(1)翻書、(2)圖片站立、(3)場景可3D任意旋轉視角
不過你在書裏只有讓plane依物件自己的中心點做x軸或是y軸自體旋轉的範例,
請問as語法該怎麼寫才能讓plane平面物件依自己的右方做出翻書動作、依自己的下方做出站立動作呢?
也就是說該怎麼寫as語法,才能把旋轉軸心由plane中心點,拉到右側或是下側,像在flash裏可把物件的註冊點從中心拉到右側或是下側?
請你務必教教我吧~
想請教一下使用displayObject3D的部份
我是用載入dae檔案放到displayObject3D
再貼到view上
想請教一下
為什麼當我貼上兩個dae檔時
第二個會把第一個覆蓋掉
(我dae的宣告名稱有設不同)