菜鳥學(xué)bpy(一)新建網(wǎng)格物體

從知道Blender可以使用bpy自定義腳本開始,我就動(dòng)了學(xué)習(xí)bpy的念頭庸论。

前幾周通過手冊(cè)自學(xué)了Sverchok薇溃,學(xué)習(xí)的過程中也了解了很多Blender操作的原理。Sverchok還有一個(gè)Scripted Node是通過python腳本添加自定義節(jié)點(diǎn)的汗贫,我也就下了學(xué)習(xí)bpy的決心。

這個(gè)“菜鳥學(xué)bpy”系列算是我bpy過程中的筆記共享秸脱。因?yàn)槲矣X得社區(qū)也有很多像我一樣的沒有編程基礎(chǔ)的菜鳥也想學(xué)習(xí)bpy落包,可能在學(xué)習(xí)中遇到與我一樣的困惑。把這些東西分享出來摊唇,也是希望能有更多人在學(xué)習(xí)過程中少走些彎路咐蝇。當(dāng)然我也是一個(gè)菜鳥,如果里面有錯(cuò)誤之處巷查,也請(qǐng)高手不吝指出有序。_

最后還是要說一句,sv大法好岛请,都來學(xué)sv吧旭寿。。髓需。


1. Blender網(wǎng)格數(shù)據(jù)

學(xué)過幾何的都知道许师,連點(diǎn)成線,連線成面僚匆,blender的網(wǎng)格也是這個(gè)原理來的微渠。

  • 點(diǎn):

假設(shè)三維空間中有兩個(gè)點(diǎn),坐標(biāo)為:

verts = [(0,0,0),(1,0,0)]

bpy中點(diǎn)的坐標(biāo)是作為列表數(shù)據(jù)存儲(chǔ)的咧擂,列表中每個(gè)點(diǎn)依次賦予一個(gè)索引值(Index)逞盆,上面兩個(gè)點(diǎn)的索引值就分別為0,1。

  • 線:
    在bpy數(shù)據(jù)中這兩個(gè)點(diǎn)連線的表示為:

edge = [[0,1]]

bpy中線的數(shù)據(jù)也是作為列表存儲(chǔ)的松申,兩點(diǎn)成線云芦,取兩個(gè)頂點(diǎn)的索引值,我們就得到了一條位于X軸的線段。

edge.jpg
  • 面:

大家都知道三個(gè)點(diǎn)才能決定一個(gè)平面贸桶,所以要得到一個(gè)面舅逸,我們必須至少有3個(gè)點(diǎn):

verts = [(0,0,0),(1,0,0),(0,1,0)]

然后我們用一個(gè)索引列表把這三個(gè)點(diǎn)連起來皇筛,就得到了一個(gè)面:

face = [[0,1,2]]

face.jpg

bpy中面的數(shù)據(jù)也是作為列表存儲(chǔ)的琉历,把一個(gè)面包含的所有點(diǎn)作為面數(shù)據(jù)的一個(gè)子列表,blender會(huì)自動(dòng)將其閉合,然后我們看到了一個(gè)位于XY平面的三角面水醋。


2. 用bpy新建一個(gè)四棱錐

首先四棱錐是由5個(gè)點(diǎn)組成的旗笔,有4個(gè)三角面和1個(gè)矩形面。

pyramid_edge.jpg
pyramid_face.jpg

下面話不多說拄踪,上代碼蝇恶。

import bpy #加載bpy,這個(gè)是必須有的

#頂點(diǎn)
verts = [(1,1,0),
         (-1,1,0),
         (-1,-1,0),
         (1,-1,0),
         (0,0,2)]

#邊
edges = [(0,1),
         (1,2),
         (2,3),
         (3,0),
         (0,4),
         (1,4),
         (2,4),
         (3,4)]

#面
faces = [(0,1,4),
         (1,2,4),
         (2,3,4),
         (3,0,4),
         (0,1,2,3)]

mesh = bpy.data.meshes.new('Pyramid_Mesh') #新建網(wǎng)格
mesh.from_pydata(verts, edges, faces) #載入網(wǎng)格數(shù)據(jù)
mesh.update() #更新網(wǎng)格數(shù)據(jù)

pyramid = bpy.data.objects.new('Pyramid', mesh) #新建物體“Pyramid”惶桐,并使用“mesh”網(wǎng)格數(shù)據(jù)

scene = bpy.context.scene
scene.objects.link(pyramid) #將物體鏈接至場(chǎng)景

打開Blender的文本編輯器窗口撮弧,按加號(hào)(+)新建一個(gè)文本,將上例中的代碼復(fù)制進(jìn)去姚糊,然后點(diǎn)擊標(biāo)題欄上的“運(yùn)行腳本(Run Script)”按鈕想虎,就得到下面的結(jié)果。

result_face.jpg

如果將載入網(wǎng)格數(shù)據(jù)代碼中的面數(shù)據(jù)改為空列表([]):

mesh.from_pydata(verts, edges, [])

再運(yùn)行腳本就可以在3D視圖窗口獲得下面的結(jié)果:

result_edge.jpg

參考資料

學(xué)習(xí)bpy之前最好還是先學(xué)一下python叛拷,下面是一些參考資料:
[1] Python入門指南中文
[2] Python新手入門指南
[3] 小白的Python新手教程(感謝屯三友的推薦)
[4] Python for Kids
[5] 如何像python高手一樣編程


最后要說的是舌厨,這個(gè)菜鳥學(xué)bpy系列是我學(xué)些bpy過程中的筆記分享,預(yù)計(jì)每周一更忿薇。具體能寫多少裙椭,就得看我學(xué)習(xí)的進(jìn)度了。署浩。揉燃。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市筋栋,隨后出現(xiàn)的幾起案子炊汤,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抢腐,死亡現(xiàn)場(chǎng)離奇詭異姑曙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)迈倍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門伤靠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人啼染,你說我怎么就攤上這事宴合。” “怎么了迹鹅?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵卦洽,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我斜棚,道長(zhǎng)阀蒂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任打肝,我火速辦了婚禮脂新,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘粗梭。我一直安慰自己争便,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布断医。 她就那樣靜靜地躺著滞乙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鉴嗤。 梳的紋絲不亂的頭發(fā)上斩启,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音醉锅,去河邊找鬼兔簇。 笑死,一個(gè)胖子當(dāng)著我的面吹牛硬耍,可吹牛的內(nèi)容都是我干的垄琐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼经柴,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼狸窘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起坯认,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤翻擒,失蹤者是張志新(化名)和其女友劉穎氓涣,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陋气,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡劳吠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恩伺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赴背。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡椰拒,死狀恐怖晶渠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情燃观,我是刑警寧澤褒脯,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站缆毁,受9級(jí)特大地震影響番川,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜脊框,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一颁督、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧浇雹,春花似錦沉御、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至烂完,卻和暖如春试疙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抠蚣。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工祝旷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嘶窄。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓怀跛,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親护侮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子敌完,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容