<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          用 Python 寫 3D 游戲,太贊了

          共 2294字,需瀏覽 5分鐘

           ·

          2022-08-03 13:10

          vizard介紹Vizard是一款虛擬現(xiàn)實(shí)開發(fā)平臺(tái)軟件,從開發(fā)至今已走過十個(gè)年頭。它基于C/C++,運(yùn)用新近OpenGL拓展模塊開發(fā)出的高性能圖形引擎。當(dāng)運(yùn)用Python語(yǔ)言執(zhí)行開發(fā)時(shí),Vizard同時(shí)自動(dòng)將編寫的程式轉(zhuǎn)換為字節(jié)碼抽象層(LAXMI),進(jìn)而運(yùn)行渲染核心。
          9e4fc533a32b328544d4cc13d9b601ac.webp

          vizard入門


          1、加載人物、對(duì)象、背景

          avatar = viz.addAvatar('xxx.cfg', pos=(0,0,0), euler=(0,0,0))viz.add('xxx.osgb',pos=(0,0,0), euler=(0,0,0))viz.addChild('xxx.obj',pos=(-4,0,7.5))
          2、鴿子隨機(jī)漫步

          ①利用????????????. ??????????????????()生成隨機(jī)位置,調(diào)用????????????. ????????????()實(shí)現(xiàn)鴿子漫步

          ②利用????????????. ???????????()生成隨機(jī)選擇,隨機(jī)更新鴿子的??????????狀態(tài)

          ③調(diào)用????????????. ????????????????()實(shí)現(xiàn)隨機(jī)時(shí)間的等待

          ④利用????????????. ????????????????()實(shí)現(xiàn)上述動(dòng)作序列

          pigeon = viz.addAvatar('pigeon.cfg',pos=(2,0,5))random_walk = vizact.walkTo(pos=[vizact.randfloat(1.5,2.5),0,vizact.randfloat(4.5,5.5)])random_animation = vizact.method.state(vizact.choice([1,3],vizact.RANDOM))random_wait = vizact.waittime(vizact.randfloat(2.0,8.0))pigeon_idle = vizact.sequence( random_walk, random_animation, random_wait, viz.FOREVER)pigeon.runAction(pigeon_idle)

          3、人物談話動(dòng)作

          def PersonTalk():  female = viz.addAvatar('vcc_female.cfg', pos=(1,0,8), euler=(-90,0,0))  male = viz.addAvatar('vcc_male2.cfg', pos=(0,0,8), euler=(90,0,0))  female.state(14)??male.state(4)

          4、角色移動(dòng)

          ①通過??????. ??????????????????????????????() ? ??????????計(jì)算移動(dòng)速度

          ②初始化歐拉矩陣??1 = ??????. ????????????. ??????????(0,0,0)

          ③通過??????. ??????. ????????????()分析對(duì)應(yīng)鼠標(biāo)事件,根據(jù)人物朝向????????????. ????????????????()更 新??1平移變換矩陣

          ④通過????????????. ??????????????????????(??1. ??????????????????????())更新人物位置

          ⑤通過??????. ??????. ????????????()分析對(duì)應(yīng)鼠標(biāo)事件,設(shè)置對(duì)應(yīng)人物動(dòng)畫:

          前進(jìn)、后退動(dòng)畫:????????????. ??????????(2)

          左跨步動(dòng)畫:????????????. ??????????(12)

          右跨步動(dòng)畫:????????????. ??????????(13)

          人物靜止動(dòng)畫:????????????. ??????????(1)

          def roleMove():  m1 = viz.Matrix.euler(0,0,0)  dm = viz.getFrameElapsed() * speed  temp=avatar.getEuler()[0]*math.pi/180    if viz.key.isDown('w'):    m1.preTrans([dm*math.sin(temp),0,dm*math.cos(temp)])    avatar.state(2)  elif viz.key.isDown('s'):    m1.preTrans([-dm*math.sin(temp),0,-dm*math.cos(temp)])    avatar.state(2)  elif viz.key.isDown('a'):    m1.preTrans([-dm*0.3*math.cos(temp),0,dm*0.3*math.sin(temp)])    avatar.state(12)  elif viz.key.isDown('d'):    m1.preTrans([dm*0.3*math.cos(temp),0,-dm*0.3*math.sin(temp)])    avatar.state(13)  else:    avatar.state(1)??avatar.setPosition(m1.getPosition(),?viz.REL_PARENT)

          5、獲取鼠標(biāo)位移

          通過回調(diào)函數(shù)callback獲取

          def onMouseMove(e):     global mp_x,mp_y    mp_x=e.dx    mp_y=e.dyviz.callback(viz.MOUSE_MOVE_EVENT,onMouseMove)

          基于vizard實(shí)現(xiàn)的效果:

          1.時(shí)鐘顯示當(dāng)前系統(tǒng)時(shí)間

          2.兩個(gè)談話小人(帶動(dòng)畫)

          3.第三人稱漫游(帶動(dòng)畫)

          1. 前進(jìn)(鍵盤 W 鍵)
          2. 后退(鍵盤 S 鍵)
          3. 左跨步(鍵盤 A 鍵)
          4. 右跨步(鍵盤 D 鍵)
          5. 旋轉(zhuǎn)(使用鼠標(biāo)左右平移)
          6. 上仰(使用鼠標(biāo)上下平移)

          4.其他三維物體/背景

          1. 鴿子做自由漫步

          2. 花瓶擺件

          3. 天空背景

          4. 草地背景

          1eca2a6f8fa05242e48c71de4d0e9552.webp
          瀏覽 80
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黑人大操逼 | 国产精久久久 | 一级片视频在线观看大全 | 亚洲最大三级网站 | 亚洲免费福利视频 |