3DCGbook

映像プロダクションに所属しています。主に毎日のアウトプットを配信していこうと思います。

工業製品こそスクリプトでモデリング!

買っちゃいました自転車。
カラミータのDUEってバイクです。

ロードレーサー…というか自転車は素人なので、
見た目重視で買ったらギアの構造がWレバー方式っていうやつでした。

あれギア変えられないなぁ…。
「ツークリックや!!」と弱虫ペダルばりにやろうとしても
できずに戸惑いました(笑)

ちなみにWレバー方式ってのはこんなんです。
f:id:blendcomp:20131214220139j:plain

左側が前で、右側が後ろって感じです。
ただいちいちハンドルから手を離さなきゃいけないのでちょっと怖い…。

まぁ、いい感じのギアでずっと回すと思うので今は気にしていませんけど(^^;

ただツークリックや!!が(以下略

さて、弱虫ペダル効果もあり現在はロードレーサーのモデリングをしています。
そこでこれ面倒だなー…と思ったのはスプロケットのモデリングです。

スプロケットってのはこれ。
f:id:blendcomp:20131214220325j:plain

よくできてます。
歯の数は増えてるけど歯のサイズは一緒なんですよね。
これをスクリプトでやりたい!と思っていろいろ試してみました。

シリンダーのSubdivisionsAxisを増やしてやる方法を最初はやったのですが…
フェースの面積がそれぞれ異なる為に上手くできず。

なので最終的にはこんな方法を取りました。


1.ベースプレーンを作ります。
f:id:blendcomp:20131214222521j:plain

name = "sprocketGeo"
alphabetArray = [chr(i) for i in xrange(ord("A"),ord("X")+1)]
for i in xrange(12):
	createPolyPlane = pm.polyPlane(n="%s%s" %(name,alphabetArray[i]),
				       width = .2,height=(i+11),sx = 1,sy =(i+11))
	createPolyPlane[0].tx.set(-i)

2.できたプレーンのFaceに対して歯を作ります。
f:id:blendcomp:20131214222717j:plain

getFaces = pm.ls(sl=True,fl=True)
for getFace in getFaces:
	extrudeFace01 = pm.polyExtrudeFacet(getFace,localScaleY = .8)
	extrudeFace02 = pm.polyExtrudeFacet(getFace,offset=0.05,localTranslateZ = 0.1)

3.bendDeformerで丸くします。
f:id:blendcomp:20131214222929j:plain

import math
getNodes = pm.selected(type='transform')
for i in getNodes:
	bendDeformer = pm.nonLinear(i,type="bend",curvature= -(math.pi))
	print bendDeformer
	bendDeformer[1].rx.set(90)
	bendDeformer[1].rz.set(90)

だいたいはこんな感じになります。
厚みとか、整列とかもろもろ調整しなきゃいけませんが、
これを手でモデリングするのは大変ですよね。

一つFaceのデザインが決まればあとはスクリプトに任せる。

モデラーでもそのようなワークフローを取れれば
もっとクリエイティビティーに時間が割けるようになります。
っと偉そうに…(^^;

工業製品は計算で作られているものが多いので、
そういった意味では作るのが非常に楽しいです。
歯車とかネジとかもそうですよね。

なのでそういったものを、
考えてモデリングする、考えてスクリプト化するというのは非常に力になります。

是非試してみてください(^^)