2007年12月30日日曜日

blender - 鏡音リン(10)

とりあえず飛べばいいだろ飛べば。
と思って飛ばしてみたんだけど、まさかの1fps。
左右に動くようにしてるんだけど、1fpsだとほとんど意味無し…。
でもネットカフェ行く金も勿体無いし…。



次に、やはり「とかち」は外せないと思い作り始めるも、
全然進まない上に、服から肌が突き抜けたり、手足の関節が変な方向に曲がりまくりました

ニコニコにすでに「とかち」のアニメーションが何個か上がってますが、
全員問答無用で尊敬しますっ!!!


リアルタイムじゃないです↑。リモートで下宿のmac miniに転送して、レンダリング。
文字は後からペイントにて。

現在、まだ22秒。


追記:
紅白見ながらずーーっと打ち込んでたんだけど、まだ28秒。
くそー、アニメーション難しいぞぉぉぉ!!!!
とりあえず根性でKeyFrame打ちまくってます。
Ipoカーブとか、全く理解してないです。

アイドルマスター製作者の話が見れます↓
SOFTIMAGE|XSI ユーザ事例株式会社バンダイナムコゲームス
「アイドルマスター」
http://www.softimage.jp/user_case/idolmaster/index.html

2007年12月25日火曜日

blender - クリスマス



クリスマスです。

Blenderが快適に使えるPCが欲しいです…。

DELL機(Dimension8300)の、Radeon9800proは、使ってるとだんだん重くなります。
mac miniの、GMA950は、windowsのドライバがOpenGLシェーダに対応してません。
実家にあるノートPCの、RadeonXpress200mもドライバが対応してません。

来年はDELL機買い換えよう…。


実家に帰るので、リモートでしか作業できなくなります。
実家のノートでGLSLシェーダが動くか謎。多分動かないような…。
最悪Blenderはネットカフェでがんばります。

2007年12月11日火曜日

blender - 来年までの目標

・オリジナルマテリアルパネル

まだ全然やってねーっす。とりあえずguiに描画してみたところ↑
blenderって、画面全部openglだから、こういうのでもポリゴンで描画しないといけないみたい…。


・blenderのショーットカットに対応したテクスチャ編集用ドローツール

えぇ、前作ってたJavaアプレット(兼アプリ)です。あまりやる気無いですが、一応微妙に進んでます。
現在オブジェクトモードとエディットモード、ショートカットのg, r大体済み、x実装中。
bは標準でb状態。
あとなんだっけ、s, alt-m, ctrl-m, kあたりか…。
svg入力も対応しないとなぁ。。。
それと、将来的に、オムニグラフみたいな機能も付けたい。


・トゥーンシェーダ(GLSL使用)の輪郭線
うーん、まだ諦めきれてません…。
そもそもシェーダについて全然理解できてないんですが。。。
いま少し光が見えつつあるような。要はマテリアルの境界に線が引ければいいんです。
まぁ年が明けるまでには何とかなるでしょう。

・鏡音リン
とかち作り始めたのは良いんですが、動きが複雑過ぎて、物凄い時間がかかりそうですorz
しかも、とかちなだけに、著作権的にダメだろうしなぁ…。曲が。
やはりGLSLの輪郭線を解決するのが先決かな…。

リアルタイムでみかんを投げたい。

2007年12月9日日曜日

blender - 鏡音リン(9)

2日あれば1曲分くらいできるだろうと思ってたのですが、全然っダメでした。
最初の2日のうち、4分の3くらい、テクスチャアニメーションのやり方調べるので、潰れましたorz
結局今日の3時頃から製作開始。

↓出来上がったのは29秒。つか、アップロードしたら最後の1秒削られてた…。



輪郭は1024x768くらいじゃないと、太くて本番に使えないんだけど、テストなので800x600、しかもムービーメーカーでwmvにしてるので、結構画質悪いです。800x600でも、1フレーム約3.3秒、今回は860フレームだから、40分くらいかかりました。

テクスチャアニメーションですが、顔を何個も描けば、簡単に出来るんですが、
目と眉と口とを分離して使い、また、GameEngineでも使いやすいようにと思い、試行錯誤してました。
MapInputのoffset(ofs)のKeyを打つんですが(JDBCのFAQ参照)、複数テクスチャ使う場合は、テクスチャスロット別にしないといけないみたいです。

マテリアルも、GameEngineで同扱えるのか良くわかってないので、目、口、眉、それ以外の顔、と分けてます。あ、でも体全体のオブジェクトは全部GameEngine用にjoinして、ワンスキンメッシュ(というのかな?)な感じです。そんなわけで、少し扱いにくいです。


こうしてる間にも、初音ミクの3D動画のもの凄いクオリティーのがあがってますね…。

【初音ミク】 ハジメテノオト 【3D PV】
http://www.nicovideo.jp/watch/sm1728993

もう、見つけたときからずっとループでかけてます。
あと、アイマスのやつも凄い。

2007年12月8日土曜日

blender - 鏡音リン(8)

多分、今回の仕様変更で、最終決定っぽいので、これにあわせて動画とか作り始めてみます。
と言っても、まともな動画を1つも作ったことがないので期待は出来ませんがorz

とりあえず、頭とスカーフ?でかくしてみました。
bloggerは画像1GまでOKらしいから遠慮なくでかいのうp。


後は、ト音記号と、足周辺の調整と、顔のテクスチャ何種類か描いて、ぶっつけ本番で。
この土日中には、何かしら出来ていると思います…。

全マテリアルいじるスクリプトは、この際だから、GUIがんばって、少し本格的な感じの、オリジナルマテリアルパネル作ろうと思ってます。Blenderって、マテリアルとか、VertexGroupとか、把握しにくいですよね…。そこを何とか一覧表示できるような感じにしよっかな。

2007年12月5日水曜日

rendering - CG Magic:レンダリング


CG Magic:レンダリング
http://www.amazon.co.jp/dp/4274066924


一部で話題の(?)新刊です。嘘か本当か、著者の倉地 紀子さんの経歴が凄すぎるので、思わず買っちゃいました。

4200円ですが、同価格帯の技術書と比べると、かなり薄いです。しかし、非常に密度が濃く、技術者とアーティストの両方に向けて書かれているようなので、分かりやすそうです。3D基礎力があり、Blenderに搭載されたSSSって一体何?原理どうなってんの?って人は買っても損は無いと思います。最新技術の原理が事細かに解説されています。

自分は3D基礎力が皆無なので、今後大学の図書館と併用して読んでいく予定。。

blender - wiki立ち上げました(2)

あー、やっとできたぁぁぁぁぁ。。MindTouch Deki Wiki。
こんどこそ、ちゃんと見れると思います。
内容はこれから…。
多分次は全マテリアルの特定の設定(shadelessとか、full osaとか)だけ、一括でon/off/反転できるようなスクリプトを作る予定。その次は、今までのスクリプトを全部GUIでまとめたスクリプトの予定。

blender.render.jp
http://blender.render.jp


長かった。元社内wikiだけあって、インストールが複雑過ぎ。
結局外部から見えなかったのは、借りてるネームサーバで、逆引きが出来なかったためでした。

以下、自分のように、ローカルからは見えるのに、外部からエラーって人のために。
/www/deki-hayes/config/mindtouch.host.sh の
MONO_CMD="$MONO … 中略 … http-port $HTTP_PORT $ip $NOTTY"
→MONO_CMD="$MONO … 中略 … http-port $NOTTY"

と変更。


そういえば、
“Error: no default auth service found”

とかいうエラーの対処法で、
* if you get “no default auth service” make sure your proxy settings are correct and that your firewall isn’t blocking port 8081.

とか書いてありますが、今日コレに騙されて(ルータのファイヤーウォールの)8081ポート空けてしまってました。こわー。危険なので空けちゃダメです。

もうほんと疲れた。でも、普通のレンタルサーバには絶対入れられないものを入れることが出来たので、妙に達成感があります。

2007年11月30日金曜日

blender - 鏡音リン(7)

トゥーンレンダリング以外、あまり興味なくて、モデリングは結構上手くなった気がするのに、レンダリング技術は一向に上がらないので、レンダリング練習。

弱リアルな感じに、、と粘ってみたものの


うーん…。俺レンダリング駄目だ…。リアルに生きよう。
ちなみに、顔の影が許せなかったので、顔だけペイントソフトで修正して、妙な感じになたorz
やっぱモデリングで手を抜いたところは、ダイレクトに反映されますね。。手とか。

追加。上のよりは暗め。顔修正無し版。

2007年11月29日木曜日

blender - python 同じAction一掃

Poseモードで色々動かした後、動かしていないものも全部選択して、InsertKeyして、こんな感じにActionを作ります。


すると、動いていないBoneにも、キーが設定されてます。


この余計なキー(実際にはIpoCurveのbezierPointsの点でした)を一掃するべく、スクリプト書きました。

実行!!

↓結果。





しかし、出来たものの、余計なところを消してないか?また、実用に耐えうるのかどうか、非常に怪しいです。

実行は、Blenderのテキストエディタで開いて、ALT-Pで。

!!!必ずデータをバックアップしてから使ってください!!!

http://render.jp/blender/deleteSameAction.py



import Blender
from Blender import *

scene = Blender.Scene.GetCurrent()
armatures = [ob for ob in scene.objects if ob.type == 'Armature']

# ----------------------------------
# delete same IpoCurves
#
# return list of deleted for print
# [[ipo,curve,index], [ipo,curve,index] ...]
#
# ipos : list of Ipos
# frameNums : list of frame numbers
# ----------------------------------
def deleteSameCurve(ipos, frameNums):
deleted = []
for ipo in ipos:
if (ipo == None):
continue
for curve in ipo:
pre = None
index = 0
for time in frameNums:
# nothing
if (len(curve.bezierPoints) == 0):
continue
# not existed bezierPoint at time
if ([x for x in curve.bezierPoints if x.pt[0] == time] == []):
continue

value = curve[time]
if (pre != None and pre == value):
length = len(curve.bezierPoints)
curve.delBezier(index - length)
deleted.append([ipo, curve, index])
else:
pre = value
index += 1

return deleted

# ----------------------------------
# delete same IpoCurves from Armatures
# see: deleteSameCurve(ipos, framNums)
#
# return list of deleted for print
# [[[arm1's deleted elements], [arm2's], ... ]]
#
# armatures : Object(.type == 'Armature')
# ----------------------------------
def deleteSameAction(armatures):
deleted = []
frames = []
for arm in armatures:
act = arm.getAction()
ipos = act.getAllChannelIpos().values()
frames = act.getFrameNumbers()
deleted.append(deleteSameCurve(ipos, frames))
return deleted

# ----------------------------------
# execute
# ----------------------------------
print deleteSameAction(armatures)

2007年11月28日水曜日

blender - python マテリアル一掃失敗

blenderのマテリアル管理は、「マテリアルからのリンクをすべて消さない限り、マテリアルが消えない」という仕様ゆえ、結構適当になりがちで、気づいたら使ってないはずのマテリアルがリストに入ってるのではないでしょうか?自分は気づいたら、一番最初にBlenderはじめたころのマテリアルが、現在作ってるモデルに入ってたので苦労して消しました。

これをスクリプトで一掃できるようになったら便利だなー。

ということで調べ始めたのですが、予想通り(?)ダメでした。現在のスクリプト仕様では、Nodeにアクセスできないので、Nodeのリンクがどうしても消せないのです。じゃあ、発想を転換して、直接.blendファイルから一掃すればいいんじゃないか?ということでBlenderのソースコードを初☆漁り。

…1時間経過。ファイルフォーマット周辺見てみたんですが、かなり複雑で(あたりまえか)、再帰繰り返して読み込みがんばってる感じでした。しかし、有名なオープンソースのプロジェクトだけあって、コードがきれい。俺は、C言語の1000行以上のコードは、友人の研究の手伝いで扱った、ゴミみたいな、うねりプログラム@先輩が残して行ったものしか見たことないので、あまりの違いようで、軽く感動。

さて、さらに漁っていると、pythonのファイル群の中に「Node.c/h」を発見。おっ!と思って見てみたら、全体がifdef-endifで括ってあって、パッチ当てないと動かないよ、と書いてあった。今後に期待。

というわけで、気長に待ってたら、そのうち中の人がNode対応してくれそう?な感じだったので、諦めましたorz

以下、使ってないマテリアルからリンクを消すスクリプト(未完成)

import Blender
from Blender import *

scene = Blender.Scene.GetCurrent()
meshes = [ob for ob in scene.objects if ob.type == 'Mesh']

# ----------------------------------
# get unused materials
# return list of Material
# ----------------------------------
def getUnusedMaterials(meshes):
# get all materials
allMats = Material.Get()

# delete used material from allMats
for mesh in meshes:
for mat in mesh.getData().getMaterials():
for m in allMats:
if (m == mat):
allMats.remove(m)
return allMats

# ----------------------------------
# delete links from materials
# !incomplete(node links etc)!
# ----------------------------------
def deleteLinks(materials):
for mat in materials:
mat.clearIpo()
mat.clearScriptLinks()
for i in range(9):
mat.clearTexture(i)


# ----------------------------------
# execute
# ----------------------------------

mats = getUnusedMaterials(meshes)
print mats
deleteLinks(mats)

blender - python ポリゴン数表示

ちょっと微妙に忙しくなってきたので、週末まで小ネタ中心でいきます。
最近Blenderハマってるので、インプットが少ないくせに、できるだけアウトプットして行こうと思ってます。

さて、今回は、ポリゴン数計算スクリプトです。
Blenderは右上に頂点の数、線の数、面の数が表示されます。
通常ポリゴン数とは、三角形の面の数を示すそうです。
面は三角形と四角形のものがあるので、面の数は、正確なポリゴン数ではありません。

というわけで、四角形の面は、三角形2つで出来ているので、四角形の面が見つかったら+2、三角形の面だったら+1するだけですね。

以下スクリプト。

http://render.jp/blender/npolygon.py

import Blender
from Blender import *

scene = Blender.Scene.GetCurrent()
meshes = [ob for ob in scene.objects if ob.type == 'Mesh']

# ----------------------------------
# return polygon number
# meshes : list of Blender.Object
# ----------------------------------
def getPolygonNumber(meshes):
num = 0
for mesh in meshes:
for face in mesh.getData().faces:
n = len(face)
if (n == 4):
num += 2
if (n == 3):
num += 1
return num

# ----------------------------------
# execute
# ----------------------------------
print getPolygonNumber(meshes)

分かりやすくifつかったものの、どうせ面は三角形か四角形しか無いので、
num += (len(face) - 2)
としてもOKですね。

Blenderのテキストエディタで開いてALT+Pで実行すると、コンソールにポリゴン数が表示されるはずです。
やってることは、見てのとおり、全メッシュの面を参照してるだけです。
この程度だと、スクリプトよりブログ書くほうが時間かかります…。
こういう自分用ユーティリティー的なのを大量生産して、後でGUI使ってまとめると便利っすな。

次回、多分「メッシュに使ってないマテリアルを一掃する」スクリプト。

2007年11月22日木曜日

blender - Vista は最悪

mac miniでOSX, ubuntu 7.10 desktop, Windows Vistaのトリプルブート+vmwareしていて、
Vistaをメインで24時間駆動させてます。

今日、ふと、うちのmac mini で blender がまともに動かないのは、Vistaのせいでは?と思い、
ひさびさにOSX(tiger)を起動してやってみると、早い早い!!!
さすが、デフォルトでOpenGLな環境だけあります。体感で4倍くらい違います。

ピクセル/頂点シェーダも、Vistaでは全滅だったんですが、OSXだと普通に動きました!!
(GameBlenderのサンプルが全部まともに動いた)

しかし、やはり、ソフトの数が圧倒的に少なく、デュアルディスプレイもダメ、リモートもVNCだからVistaより遅いし、起動は早いけどアプリの起動が遅いような。。メインで使うことは無いけど、Blender用に使ってみようかな。

ちなみに、新しいレオパードではBlenderまともに動かないらしいので注意。

あと、Game Blenderのスクリプト実行したら、普通に動くけど、なんかmallocエラーが出ました。
なんぞこれ。

2007年11月21日水曜日

blender - 骨入った

骨が…



入った~~~!!!



っと。


JDBCに訳が載ってる、腕と足のリギングですが
、腕の指のところのIKは、UseTipをオフにして、ChainLenの値を変えないとダメみたいです。何のことやらさっぱり分かりませんが、
Blenderのフォーラムに良く出来た完成品と解説があるので、自分みたいな横着者は、ありがたくパクりましょう!お手本を完コピして、次から自分で設定できるようになり、そのうち意味が分かれば万々歳ってことで。

しかし、ボーンに頂点割り当てるほうが、かなり時間かかります。短パンめんどいから足と一緒にしたし、もう髪にボーン入れる元気なし…。

blender - トゥーンレタッチ

トゥーンレタッチマテリアルノードという、おもしろそうなのが、
Blender.jpのフォーラムのチュートリアルコーナーにあがってました。
これは凄い!!!
マテリアルノードがメインのネタですが、コンポジットノードも参考になります。

>頂点カラーを利用した、レタッチ可能なトゥーンシェーダ(?)です。
http://blender.jp/modules/newbb/viewforum.php?forum=4


ということで、最初は何のことか分からなかったんですが、元ネタ辿っていくと
驚愕のムービーが見れるので、気になる方は是非。

------
現在骨入れが激しく分からなくて苦戦してます…。

2007年11月18日日曜日

blender - 鏡音リン(6)

歩行テスト。足がすべるって、このことだったんですね…。
strideとかいうの使ってみようかな…。
それか、もう『空を飛べる』という仕様にしてしまおうか。頭にプロペラっぽいのあるしw

まともに動画作るの初めてなので色々大変なことに。
ボーンとか、かなりやっつけ。
エンコード方法が悪いのか、相変わらずシークできないorz
それと、わざわざ影になってるほうにカメラ向けてしまった。

2007年11月17日土曜日

blender - 鏡音リン(5)

ようやくモデリング終わりました。次はアニメーション作ってニコニコにうpするのが目標…。
現在無意味に徹夜してます。現在42時間くらい起きてます。
動かなかったら(=パソコンやってたら)体力消費しないので、案外イケます。
ただし栄養ある食事と、糖分は必要不可欠です。

週末なので、苦手な骨入れを克服しつつ、簡単なアニメーション作成できればと思ってます。


ちょっと細めのエッジになった。

この鏡音リンは、顔とヘッドフォンと腕の数字以外、全部マテリアルで、subsurf lv1かけた状態で 11000 faceです。見えない部分の体なども入ってます。
テクスチャは出来るだけ描きたくないし、描けないですorz
まぁ趣味だし、鏡音リンがかわいければいいと思う。

2007年11月16日金曜日

blender - 鏡音リン(4)

公開されたラフ画に出来るだけ体型を合わせました。
どう考えてもありえない細さですが、そこそこ再現できたと思います。
素人なりにかなり苦労しました…。
体型はこれで決定ということにします。

あと残ってるモデリングは…、
短パンと服とヘッドフォンとベルトとチェーンとマイク。
結構あるな、、。
髪のテクスチャとか描こうとしてみたけど、やっぱ俺テクスチャ下手過ぎてダメぽ。
もうマテリアルでいいや…。

土日で骨入れと簡単なアニメーション作れたらいいなぁ。

それにしてもblenderはトゥーンが何とも言えないボンヤリした感じになります。
何とかしてLightWaveのUnreal見たいに、パリッとした感じにならんかな…。
と思って色々探してたら凄いの発見。↓コンポジットノードを駆使すればできるっぽい。

Normal と Alpha を掛けてラプラシアンフィルタでエッジを抽出して
ColorRamp で色つきの輪郭線をグレースケールにして
Blur でアンチエイリアスされた輪郭線を生成してるんですねえ。
http://www51.tok2.com/home/msa4kudo/nanoha3dcg/index.php?res=53


今度やってみよう…。→やってみた。

WarabiとBlenderのトゥーン比較。


Warabi最高。ってのは置いといて、
Blenderのマテリアルノードとコンポジットノード併用すると、ここまで行けるのか…かなり感動してしまった。上記掲示板の神な人に感謝。

ちなみに、↓こんな感じでやりました。

2007年11月13日火曜日

blender - game blender - python script intro

今回は、blender GEで、pythonスクリプトを実行してみます。
意外に、導入(introduction)サイトって無いんですよね…。やはり最初はhello pythonでしょう。正直pythonって余り知らないですが、class作れてインタプリタで動的型付けだから、まぁrubyみたいなものでしょう。

まず、おもむろにBlenderでtext editorを開き、newして『print "hello python"』と書き、test.pyという名前で保存します。


次に、text editor上で、alt + p を押すと、先ほどのプログラムが実行され、コンソールに出力されます。


さて、ここからが本番です。GE上で実行するには、何かしらのオブジェクトに関連付けないといけないようです。そこで、emptyを1つ追加します。


次に、以下のように設定。入力(マウスの移動やキーイベントなど)が感知されると、pythonスクリプトに渡す、という設定です。
良くわからなかったらblender wikiのチュートリアルへ
http://wiki.blender.org/index.php/Game_Engine



最後に、3D画面で p を押して、実行し、3秒ほどしたら Esc で終了します。コンソールを見ると、ちゃんと実行されてました。



次回こそはマウス入力でぐりぐり(ry

2007年11月11日日曜日

blender - 鏡音リン(3)

今日は日曜なので、数時間モデリング。
ああでもない、こうでもないと、ひたすら微調整を繰り返し、
気づいたら元に戻ってて、「似てる」と「似てない」の間を行ったり来たり。
本当、顔って難しい。

左:after 右before

テクスチャは後で描くとして、輪郭は、もうこれが限界…。
らぶデス2の素体がいかに神かってことが良くわかった。

2007年11月8日木曜日

blender - 鏡音リン(2)

なんとかここまで。相変わらずローポリ気味。

blender - 鏡音リン製作開始

初音ミクは正直あまり好みじゃなかったんですが、
次のボーカロイド、鏡音リンは、かなりジャストミート(ズボン以外)
だったので、早速作り始めました。

2007年10月28日日曜日

blender - GLSL

今やGPUのトランジスタ数はCPUを超え、並列性ではCPUに勝っている。
今の時代リアルタイムで30万ポリゴンテクスチャ付きで動くんです。
これはもうGPU使い倒すしかねー!って感じです。
…が、うちのmac miniはGPUがオンボードの最悪なやつで、
使い物にならないので、3Dやるときだけ古いパソコンに登場してもらってます。
近い将来、レンダリングは全部リアルタイムでプレビューとかになりそうですね。
(もうなってる?)

GLSL Sources - Blender Artists Forums
http://blenderartists.org/forum/showthread.php?t=104031

↑から適当に拾ってきた奴を、Blenderで開き、
『p』を押してリアルタイムレンダリングした例。↓





初音ミク in Blender

らぶデス2のあゆみが初音ミクになってBlenderに登場!