<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
    主站蜘蛛池模板: 精品多毛少妇人妻AV免费久久| 成人免费区一区二区三区| 午夜视频在线免费观看| 亚洲精品自在在线观看| 日本在线看片免费| 亚洲国产超清无码专区| 成年女人喷潮毛片免费播放| 亚洲乱色伦图片区小说| 亚洲第一永久AV网站久久精品男人的天堂AV| 羞羞漫画小舞被黄漫免费| 国产成人高清亚洲| 永久免费AV无码网站国产| 久久久影院亚洲精品| 久操视频在线免费观看| 亚洲人成网站18禁止久久影院 | 免费无码又爽又刺激高潮视频| 国产V亚洲V天堂A无码| 91精品视频免费| eeuss草民免费| 亚洲日韩中文字幕无码一区| 日韩精品亚洲aⅴ在线影院| 国产成人免费高清激情视频| 免费毛片在线看不用播放器| 亚洲国产精品精华液| 亚洲色图视频在线观看| 精品亚洲视频在线观看 | 久艹视频在线免费观看| 成人精品国产亚洲欧洲| 亚洲国产视频一区| 亚洲精品亚洲人成人网| 精品免费国产一区二区三区| 95老司机免费福利| 两性色午夜视频免费播放| 亚洲国产精华液2020| 亚洲AV无码久久久久网站蜜桃| 亚洲精品乱码久久久久久久久久久久 | 亚洲av无一区二区三区| 亚洲国产日产无码精品| 久久久久亚洲AV片无码| 国产午夜亚洲精品国产成人小说| 国产青草视频在线观看免费影院|