<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## **貳、變換清零** **AOI:** 首先,我們先來解決學習bpy最基本的問題吧:從哪里知道對應的操作是什么命令。 **H子:** Blender有沒有什么地方能查看到自己每一步的操作對應了什么命令呢。如果有的話,倒是很方便了。 **AOI:** 你所說的正是存在的。首先,先看到Blender界面的最上方吧。就是那條菜單欄 ![](https://box.kancloud.cn/58adf8963e524f2687637ee5c36a1346_1508x53.png) 鼠標移到菜單欄的下邊界上,當鼠標看起來像這樣的時候![](https://box.kancloud.cn/2623a0f31ca8d87e8ca92a900892cdac_29x33.png),往下拉,你就會打開一個新世界。 看起來,就像是這樣的: ![](https://box.kancloud.cn/48b70622ab04c33cc3ddf6db417966e9_1443x165.png) 而這個位置,就是你所說的,顯示操作對應的命令的地方了,雖然不是每個命令都會顯示,但是絕大部分的命令都會在此顯示出來。活用這個功能,就能大幅度的降低學習門檻了。 **H子:** 噢噢噢噢!(發出了歡喜的聲音。) **AOI:** 不要自顧自的感動了,先來操作一下吧。重置對象的變換和對對象進行變換吧。 首先選中隨便一個模型,然后移動一下。 ![](https://box.kancloud.cn/d91365a2a1ca9b6b85fc68a6a0bc3197_1282x567.png) 就可以看到,已經產生了一個移動的命令 再按一下Alt+G,清零一下移動的變換 ![](https://box.kancloud.cn/1fa0be4fc22744ed0be54502c557576f_411x33.png) 就可以看到,這里也產生了一條清零移動變換的命令 這樣,就得到了目標的兩條命令了。 ![](https://box.kancloud.cn/870a9ff0f6d35c95fa22fe18a6b45015_1279x46.png) 點擊右鍵選擇兩條命令,并按Ctrl+C復制,即可復制命令 ![](https://box.kancloud.cn/fd1f254ec9b91b84364015fdd91f237f_528x544.png) 可以看到,復制下來的命令,是基于ops類下面的object進行的操作。 ![](https://box.kancloud.cn/8b7b58a57976c5a4881587d34fbadfac_1023x131.png) 查詢官方文檔的描述,可以看到,這個命令的作用是 > Translate (move) selected items >移動選中的對象 而我們是通過context來獲取對象,所以要遍歷操作對象,只需要循環的選中每一個對象,然后使用這個命令對模型進行移動即可。 值得注意的是,這個命令所進行的操作,是**移動**,而不是**移動到**。也就是說,輸入的value值,其實是一個**移動的增量**,這點請務必注意。 接下來,我們就可以在交互窗口輸入一下剛才的命令,再選中一個對象,實際操作一下看看: **H子:**好的,首先復制一下命令,然后貼到交互窗口。 ![](https://box.kancloud.cn/e78114c96218b77cc4793a04751b7f41_1078x43.png) 再隨便選中一個模型 ![](https://box.kancloud.cn/993dce3cf4d4ef92ef2e748f87164488_592x548.png) 執行命令后返回了{'FINISHED'},同時模型也已經完成了變換 ![](https://box.kancloud.cn/9380c564805e83391b85db97317d3791_1062x69.png) ![](https://box.kancloud.cn/2a389fb8cc3f510705adb649d00a7b23_561x511.png) 好的,確實的見到了模型的位置完成了和value輸入的值一致的變換。 完成了! 也就是說,我也可以用同樣的方法,去獲得對模型的旋轉和縮放的變換了? 而且,因為變換清零的命令是把所有的數據都清零,也就是說,清零前的數據,剛好就等于一次完整的變換操作,也就是說,**只要記錄清零前的坐標,在完成了清零之后,再利用這個坐標進行一次變換,就可以把模型變換回到原本的狀態了。** **AOI:** 對,就是這么回事。所以之后只要逐個選中模型,然后再進行變換操作,就可以對每個模型清零變換并且導出,然后再放回原位,導出的模型是完美的,導出后,也不會因為導出的操作改變了原本在場景上的位置。 **H子:** 那么再試試看旋轉好了。 ![](https://box.kancloud.cn/7e47045ba7f32a3cc942d64be27f32e1_1278x31.png) 啊,奇怪了,多了一個參數了。 ![](https://box.kancloud.cn/3d9962ee0904fc0cc2c8a09ed073056f_1013x138.png) >**value** (float in [-inf, inf], (optional)) – Angle >**axis** (float array of 3 items in [-inf, inf], (optional)) – Axis, The axis around which the transformation occurs 從API來看,旋轉的操作是給定一個角度和旋轉所繞的軸進行啊。這樣的話,一個物體本身不就無法獲得這個參數了嗎。 看來并不可以直接這樣用了阿,只能另辟蹊徑了嗎? 繼續查查看好了 首先看看,選中的對象自身有什么參數好了: 輸入個bpy.context.selected_objects[0]. 然后按ctrl+空格鍵 ![](https://box.kancloud.cn/aa76e1a9979e1ddd7b79ac4d4cc9dac9_394x131.png) ![](https://box.kancloud.cn/fc1d8062696ed4fba87c3e3c5a3f1fbc_248x140.png) 阿 ![](https://box.kancloud.cn/45636ebdfd687dcdc9064ce273517c78_559x32.png) 確實的輸出了當前模型的歐拉角度了 看來是弧度值呢。 試試看直接賦值會怎么樣呢: ![](https://box.kancloud.cn/987115ea3e70db865dc0c87ed4631404_554x28.png) 實際運行的效果是 ![](https://box.kancloud.cn/897e81ace16a93816a6a4dd4b9e82950_176x105.png) 選中的模型的X軸角度確實改變了! 這樣的話,只要我清空旋轉之前,保存一下模型的原始XYZ旋轉角度,然后導出完成后再重新把保存的數據賦予模型就好了把,甚至都不用什么其他的操作命令了。 總結一下: bpy.context.selected_objects[0].location bpy.context.selected_objects[0].rotation_euler bpy.context.selected_objects[0].scale 這就分別是選中對象位于世界坐標系的位置,旋轉和縮放的值了。后面只要在清零變換前保存這個值,就可以安心清零,然后再賦值還原了。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看