<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sealyu

    --- 博客已遷移至: http://www.sealyu.com/blog

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks
    DDM君,F(xiàn)lab3D.com (允許轉(zhuǎn)載,轉(zhuǎn)載請注明)

      所有PV3D三維模型都是繼承至DisplayObject3D類,所以所有三維模型都有同樣的移動(dòng),旋轉(zhuǎn),縮放的方法/屬性。(如果不理解什么叫繼承可以無視這句話=_=)講這句的意思是“攝像機(jī)這些也是DisplayObject3D”,所以也可以做同樣的操作。

    我們第一篇的小球在這里不是特別能明顯表示下面的區(qū)別。所以我們這次用個(gè)立方體Cube。

    原理介紹:

    先記下上面這個(gè)圖,它保證我們不迷失在三維的世界里,如果你正好是maya,3dsmax的使用,恭喜你!和里面的道理一模一樣。

    移動(dòng):
    cube.x  //物體在世界坐標(biāo)的X軸位置
    cube.y  //物體在世界坐標(biāo)的Y軸位置
    cube.z  //物體在世界坐標(biāo)的Z軸位置
    pv3d的三維坐標(biāo) 圖1

    cube.moveForward(一定距離) //向物體本地Z的正方向移動(dòng)
    cube.moveBackward(一定距離) //向物體本地Z的負(fù)方向移動(dòng)
    cube.moveDown(一定距離)//向物體本地Y的負(fù)方向移動(dòng)
    cube.moveUp(一定距離)//向物體本地Y的正方向移動(dòng)
    cube.moveLeft(一定距離)//向物體本地X的負(fù)方向移動(dòng)
    cube.moveRight(一定距離)////向物體本地X的正方向移動(dòng)

    這兩種有什么區(qū)別呢?其實(shí)就是world和local坐標(biāo)系的區(qū)別,上面那張圖應(yīng)該能幫助您理解。

    旋轉(zhuǎn):
    cube.rotationX  //物體繞世界坐標(biāo)的X軸,順時(shí)針旋轉(zhuǎn)
    cube.rotationY  //物體繞世界坐標(biāo)的Y軸,順時(shí)針旋轉(zhuǎn)
    cube.rotationZ  //物體繞世界坐標(biāo)的Z軸,順時(shí)針旋轉(zhuǎn)

    cube.yaw(一定角度)  //以本地的Y為軸心,順時(shí)針旋轉(zhuǎn)
    cube.pitch(一定角度)  //以本地的X為軸心,順時(shí)針旋轉(zhuǎn)
    cube.roll(一定角度)  //以本地的Z為軸心,順時(shí)針旋轉(zhuǎn)
    (yaw-pitch-roll其實(shí)是歐拉角euler的一種描述方法,愿意研究圖形數(shù)學(xué)可以到網(wǎng)上百科查詢具體含義,我們flash3d研究所以后也會(huì)在圖形學(xué)原理里放出關(guān)于三種旋轉(zhuǎn)方式和萬向節(jié)鎖gimbal-lock的相關(guān)資料)

    這兩種有什么區(qū)別呢?還是自己嘗試嘗試吧~不要放棄任何一種哦,都是每天都會(huì)用到的東西。

    縮放:(默認(rèn)下,單位為1,2,3…倍這種,不是百分比)
    cube.scaleX  //物體延X軸放大
    cube.scaleY  //物體延Y軸放大
    cube.scaleZ  //物體延Z軸放大
    這是分別延x,y,z的縮放,如果要整體縮放,直接用下面這個(gè)就可以了。
    cube.scale  //物體整體放大

    代碼流程:
    仍然有困難寫出代碼的朋友,可以 下載源代碼

    和上次一樣,建包,放傻瓜包,然后初始化最基礎(chǔ)的4要素。不想重新來一次的可以就修改上次的^_^。如果不記得了可以看 《第一篇 人人都能PV3D》—點(diǎn)擊到第一篇
    我們這次要添加一個(gè)cube(立方體)。

    cube=new Cube(new MaterialsList({all:new BitmapFileMaterial('map.jpg')}),500,500,500,3,3,3);
    介紹一下生成立方體的構(gòu)造器,和我們第一篇的球體少許不同。
    第一個(gè)參數(shù)需要一個(gè)‘材質(zhì)列表’(MaterialsList),而不是像我們上次小球只要單個(gè)材質(zhì)。(不理解材質(zhì)列表暫時(shí)沒關(guān)系,其實(shí)它就是一個(gè)很多單個(gè)材質(zhì)添加在一起的‘數(shù)組’或object。我們以后會(huì)在中級研究中作一些具體分析)
    參數(shù)二,參數(shù)三,參數(shù)四分別是立方體的寬,長,高。
    參數(shù)五,參數(shù)六,參數(shù)七分別是決定長寬高有多少段(段數(shù)越多運(yùn)行越慢,但是貼圖變形越小,越準(zhǔn)確)。

    因?yàn)樾枰?#8216;材質(zhì)列表’(MaterialsList),所以開始要記得把MaterialsList類導(dǎo)入進(jìn)來。
    import org.papervision3d.materials.utils.MaterialsList;
    當(dāng)然,也得把立方體的類導(dǎo)入
    import org.papervision3d.objects.primitives.Cube;

    為了能更清楚的測試這些控制的含義,我在初始化的時(shí)候先給立方體了一個(gè)角度。
    cube.rotationX=30;
    cube.rotationY=30;

    enterframe里面就可以測試我們學(xué)到的各種操作了。
    屬性需要這樣寫才能累加,才能看到動(dòng)畫變化:
    cube.x+=10;
    方法直接寫就可以了:
    cube.MoveForward(10);

     這次的也非常簡單吧,記住它們,熟悉它們,因?yàn)槲覀兠刻於紩?huì)用到。
    好好練習(xí)哦~加油!
    有任何不清楚的地方,歡迎到討論區(qū)發(fā)言。(無需注冊)

    DDM君
    Flab3D.com

    Flash3d研究所推薦的Pv3d傻瓜包下載
    源文件下載

    posted on 2008-11-19 19:36 seal 閱讀(603) 評論(0)  編輯  收藏 所屬分類: Flex+ActionScript
    主站蜘蛛池模板: 亚洲国产精品乱码一区二区| 亚洲国产午夜福利在线播放| 18gay台湾男同亚洲男同| 国产性生大片免费观看性| 国产成人99久久亚洲综合精品| 一区二区免费国产在线观看| 亚洲精品国产自在久久| 中文字幕乱码免费看电影| 久久精品亚洲日本佐佐木明希| 亚洲免费在线视频| 亚洲精品福利网泷泽萝拉| 狼群影院在线观看免费观看直播| 亚洲最大中文字幕| 成人超污免费网站在线看| 亚洲av无码一区二区三区四区| 九月婷婷亚洲综合在线| www在线观看免费视频| 亚洲AV无码第一区二区三区 | 一级做a爰全过程免费视频| 亚洲视频精品在线| 国产v精品成人免费视频400条| 亚洲国产精品无码久久| 亚洲av日韩片在线观看| 无码免费一区二区三区免费播放| 亚洲人成毛片线播放| 日本免费无遮挡吸乳视频电影| 国产免费播放一区二区| 亚洲天堂一区二区三区| www亚洲精品少妇裸乳一区二区| 国产免费无码AV片在线观看不卡| 亚洲精品福利你懂| 中文字幕久久亚洲一区 | 久久国产乱子伦精品免费强| 亚洲人成影院在线高清| 亚洲性久久久影院| av大片在线无码免费| 视频免费1区二区三区| 91亚洲国产成人精品下载| 免费大学生国产在线观看p| 免费毛片a线观看| 亚洲AV无码成人精品区日韩 |