2008年5月29日木曜日

etc - 曲も作らねば

久々に mum 見てたら、無性に曲作りたくなってきた。

↓音悪いけど3Dムービーで中々独特なので是非

Múm, Green Grass Of Tunnel


気づかないようにしてたんだけど、サウンドノベル作るんだから音楽無いとサウンドノベルにならないし、いずれ作らないといけない運命だったのです。

折角初音ミクも持ってるんだし、今から何か1曲くらい作ってやる!!!スイーツ(笑)にも受ける感じのを!



というわけで早速製作開始!
機材は下からZOOM606Guiter、ZOOM606Guiter、BOSS DR-5。
それぞれ購入価格は1万円、3千円(ジャンク)、7000円(中古)である。7、8年前くらいに購入。

----------

→1時間ほど初音ミク粘って1分ほどの歌を作ってたんだけど、突如フリーズして保存してなくてオワタorz

2008年5月28日水曜日

blender - フルスクラッチ

いつのもことなのですが、モデリング中は、完成するまで、画像をガンガン載せまくりたくなるのです。
こればかりは習慣になっているので、どうしようもありません。

先ほどsubsurfLv0(つまりsubsurf無し)をフルスクラッチと名付け、ためしにやってみました。

こちら。全て三角面に変換済で6092ポリゴン。
体の中身とシマパンも入ってます。また、髪は裏面もあるので、カリングONでもイケます。


いわゆるローポリってやつです。(最近は1万以下でもローポリらしいってことで…。)


見た目、手や顔がちょっと厳しいですが、これくらいだったら、アクションゲームとかでもサクサク使えそうですねー。
髪とかは、subsurfでソリッド感を出すために結構余計な線入れてるので、ローポリ用に作り変えれば、もうちょい減りそう。

が、問題はローポリにしたところで、ローポリを生かせるようなゲームを作れそうにないってことですねー。アクションとか格闘とか。コマンド入力とか当たり判定とかめんどくさそうです><

------------

あ、、耳がまだだったorz

blender - 長門(2)

これから横/後ろの髪をがんばっていくわけですが、アニメキャラを作るときに誰しもが突き当たると思われるのが髪型です。

ハイライトは、まぁ無くても何とかなるし、最近のアニメは固定でハッキリ分かるのが多いから、単純にハイライト用の輪を作ってシェーダーでマスクかければ出来ると思います。(タイムリープ(リンク先18禁)とかは、ハイライトとかセルフシャドウとか結構凄い。ってかXBOX360に移植ってww)

問題は、これですこれ。アトム、スネオ、に代表される、方向によって変わる髪形。


とりあえず一番見られる前方/斜め視点に合わせているんですが、何とかならないかなぁー


ん?待てよ、同じ髪じゃなくて別の髪なだけか、これ…

2008年5月26日月曜日

blender - 長門ミク

初音ミクにコスプレした長門っていう設定で。



眼の色はとりあえずミクのままだけど。。

輪郭修正しまくった効果もあり、結構いい出来!(自画自賛。

ちなみに素体は、3D(blender)をはじめてから、一番最初に作ったやつを、ひたすら使いまわして修正して、使いまわして修正してます。

最近で言うと、この長門ミクの素体は、(3体ほど失敗作)→鏡音リン→初音ミク→レナ→長門→長門ミクとなっていて、元は初音ミクなのです(めっちゃややこしいな!)


レナの目入れた青目バージョン。もはや初音ミク。
初音ミクって元々青目なんですが、参考にしたイラストが緑だったので緑にしただけなんです。
やっぱ青のほうがいいなー。


----

適当レンダリング。
テクスチャとかメンドイから頂点カラーでいいや。



-----

目を長門色に。



-------

長門有希のほうも進行中。(後ろの髪がまだ)

2008年5月25日日曜日

blender - 長門

素体レナのに変えて製作開始。


やはり髪に異様に時間がかかるなー。
1本ずつとか、ある程度の塊ずつ作ったほうが早いのかな…?うーむ

2008年5月23日金曜日

blender - ファイルフォーマットを書き換えたい(21)

いつまで続くんだろう、このシリーズ。
今後ゲーム作りのほうに集中するため、そろそろこの辺で区切りとします…。

以下現状まとめ。結構使えるレベルになってきたと思うので、当分このままかも。

Blender245xml04



実行ファイル(2.45ベース)
http://render.jp/blender/blender245xml_04.zip
ソース
http://render.jp/blender/writeXML.cpp

Blender245xml04が吐くxmlは、頂点にボーンが割り当ててなかろうが、ウェイトがどうなっていようが、構わず高速に吐くので、比較的使えると思います。

・Blenderから、スキンメッシュアニメーションに必要と思われる構造体を、出来るだけそのままxmlに吐きます。
・保存するときは、現在のファイルを.blendファイルに保存した後、同ディレクトリに「fineName_me.xml」「fileName_arm.xml」「fileName_cam.xml」(それぞれMesh、Armature、Camera)を保存します。
_me.xmlには、メッシュオブジェクト毎に、頂点、法線、UV座標、マテリアルカラー、頂点カラー、ボーン番号、マテリアル番号、その他が入ってます。
_arm.xmlには、Armatureの親子構造(XファイルでいうFrame)とか、アニメーションデータが入っています。
_cam.xmlには、カメラに関する各種パラメーター(の中の使いそうなものだけ)と、カメラのIpoアニメーションが入っています。


xmlconverter04.jar



実行ファイル
http://render.jp/blender/xmlconverter04.jar

ソース(NetBeans5.5 + JavaVM1.4以上)
http://svn.render.jp/ xmlconverter2/
手を抜けるところは全力で手を抜いてるので、あまり参考にしないようにしてください。
ドラッグアンドドロップ、いくらやっても出来ねえ!と思って、わざわざよく出来たオープンソースのコードパクってきても出来なかった。が、NetBeans上から実行したら出来なくて、普通に実行したら出来た。意味不明。

上記Blender245xml04で吐き出した、各種xmlを、DirectXに適した、読み込んですぐ使えるような独自形式のxmlに変換します。

Blender245xml04で吐いたxmlを入れて、変換すると、同じディレクトリに「fileName_me_.xml」「fileName_arm_.xml」「fileName_cam_.xml」を作ります。DirectXでの使い方は、SVNリポジトリのModel.cpp/h、Camera.cpp/h、Start.cppからパクってください。

xmlconverter04.jarの注意事項
・面は三角形にしか対応してません。
・_me.xml、_arm.xml、_cam.xmlを各種1つずつ入れて使う仕様
・それぞれ個別に変換可能だけど、_me.xml(メッシュ)にはボーン番号が必要なため、_arm.xmlを一緒に変換する必要有り。つまり複数アニメーションのときは、最初の1回だけ_me.xmlと_arm.xmlを一緒に変換し、それ以降は_arm.xmlの変換のみでおk。
・1Meshをオンにすると、_me.xmlに複数のメッシュオブジェクトが入っていた場合、1つにする。1つにしたほうが読み込みが楽だけど、UV座標割り当てて無いオブジェクトがあっても無理やり1つにするので注意。
・マテリアル毎にsubsetとして分けるので、マテリアルが割り当てられて無い面があると変換できません。
・カメラのIpoアニメーションはテスト中のため、現在DirectX側で座標変換してます

ワンスキンサンプル(.blendファイル)
http://render.jp/blender/sample04.zip

相変わらずです。顔変になってるけど直すのめんどい。


--------------

と、ここまで書いてて気づきましたが、今のところ複雑すぎて、本気でBlender+DirectXで3Dゲーム作りたい人じゃないと、役に立たないかもですねぇ。でも本質的に複雑なので、仕方ないです。

Blenderでまともに複数アニメーション吐けるコンバーターが無いというのもありますが、Blender+DirectXって1年置きくらいに誰かが挑戦して中途半端に終わってる気がします。

--------------

というわけで、現状、まだまだ何でも変換ってわけには行きませんが、目標であったスキンメッシュの複数アニメーション+カメラは出来ているし、blender245xml04ではShapeKeyも吐くには吐いているので、コンバーターを改良すればShapeKeyにも対応できるかもです。また、コンバーターは複数オブジェクトに対応している(はず)なのでDirectXの読込み側を何とかすれば、複数メッシュの親が同じArmatureという状態にも対応できるはずです。

まぁ今年いっぱいは、気長にやっていこうと思っているので、忘れた頃に、また続き作ります。

2008年5月20日火曜日

etc - アンダーグラウンド・VOCALOID

VOCALOIDアンダーグラウンド・カタログ
http://www.nicovideo.jp/mylist/6716138
という素晴らしいのを見つけたので、全曲聴いてその中から独断と偏見により厳選してみました。


*下に行くほど危険


【初音ミク】 借金ソング
http://www.nicovideo.jp/watch/sm1780019

【初音ミク】SEXミクるんズのテーマ【オリジナル】
http://www.nicovideo.jp/watch/sm1739295

ミクツバウ「ボーカロイド・デーモン」
http://www.nicovideo.jp/watch/sm2528261

Palila / 初音ミク_オリジナルテクノ
http://www.nicovideo.jp/watch/sm1893715

「飲酒運転」を初音ミクに歌わせてみた
http://www.nicovideo.jp/watch/sm1827960

blender - レナ(2)

前回から輪郭をかなり修正。

3Dレナを作るにあたって、上手いイラストとかを参考に作っているのですが、
一般的に認知されている「レナ」@原作通りと、2次創作でデフォルメされていった「レナ」がいます。

もちろんデフォルメされてるほうが、かわいいイラストが多く、どうせグロイシーンとか無理だし、そっち路線で行こうかと思ってるわけですが、レナに見えるでしょうか??汗



一般に認知されているほうは、こんな感じなんですが↓
HOBBYSTOCK :: エクセレントモデル ひぐらしのなく頃に 竜宮レナ
http://www.hobbystock.jp/item/view/HBY-GCF-00000629


うーん、全然違いますねー。

2008年5月17日土曜日

etc - 実写版ひぐらしのなく頃に

東京に来ています。「ひぐらしのなく頃に」の実写映画を見てきました。
ひぐらしのなく頃には、アニメの1、2話(嘘だっ!のところまで)しか見ていなかったので、なにも知らず江波団長に連れていかれました。

内容は、ホラーだったんですかね~、うーむ。いまいち良くわかりませんでした。
最初の何分か、どっちがレナか把握してませんでしたし。
(あと、ちらほら客から笑いが。)

2008年5月14日水曜日

blender - レナ

今までずっと、正射影ビューで、しかもShift+Spaceで1画面表示でモデリングやっていたんですが、
思っている体のラインが中々出ないので、思い切って透視射影ビュー(テンキーの5)でやってみました。
しばらく切り替えながらやってると、意外に上手くいって満足。

ちなみに、いつも物凄い適当な作り方してるので、作業動画とか作ったら意味分からんものになりそう。



2008年5月13日火曜日

blender - ファイルフォーマットについて語ってみる

Microsoft emails Blender About File Format Support
http://www.blendernation.com/2008/05/13/microsoft-emails-blender-about-file-format-support/
↑の詳細


どうやらマイクロソフトがBlenderのファイルフォーマットをオープンにしないか?と言っているようですね。
すいません、誤解だったようです。(青柳 臣一さんご指摘ありがとうございます)
詳しくは、青柳 臣一さんのサイトなどを参照してください。
http://shinichiaoyagi.blog25.fc2.com/blog-entry-39.html


マイクロソフトはOOXMLを例に挙げて、うちはオープン化を推進してますと言ってるわけですが、Blenderの開発者達は、
The OOXML saga stands as a perfect example of how Microsoft plays to win, by hook or by crook. It is a "standard" that only Microsoft can fully use.

と批判してます。

-----

これに関して、政治的問題は良く分からないので、素人ながら現実的な実装についての見解を勝手に述べさせてもらうと、Blenderのバイナリフォーマットをオープンにしたところで、まともに読み込んで使おうという人は出ないと思います。自分が今まで見たフォーマットの中では、かなり特殊でややこしいです。また、BlenderXMLというプロジェクトが、2005年から保留になっているようですが、データを全部XMLにするとなると、ファイル容量が最低2倍くらいにはなると思いますし、読み書きサポートするとなると、かなりの作業量になるかと思います。(だから保留されているのではないかと…。しかもこの人Cのパーサーから書こうとしてるし。)

--------------------------

俺のやつは現在ShapeKeyに対応中。やっぱ口はShapeKeyじゃないと駄目だって気づいた。
ShapeKey対応ってことは複数Meshのparentが1Armatureという状態に対応しないといけないわけで、そうするとdef_nrの番号がMesh毎になってるので…(ry

--------------------------

マイクロソフト絡みで。

マイクロソフト、学生への開発ツール無償提供を日本でも開始
http://journal.mycom.co.jp/news/2008/05/13/036/index.html

対象製品一覧
Visual Studio 2005 Professional Edition 日本語版
Visual Studio 2008 Professional Edition 日本語版
Expression Studio (Expression Web, Expression Blend(TM), Expression Media, Expression Design) 日本語版
Windows Server Standard Edition 日本語版
SQL Server 2005 Developer Edition 日本語版
XNA Game Studio 2.0 日本語版 英語版
XNA クリエイターズ クラブ 12ヶ月間 メンバーシップ


その昔中学生のとき、高い金出してVC++6.0proACを買ったというのに、
VS2008pro無料って。最近の学生恵まれ過ぎ、、。いや俺もまだ学生なんだけどorz

Expression Designもかなり気になってたので、チェックしておきたいところ。

2008年5月9日金曜日

blender - subsurfのapply



何がキレイだと思うかによるけど、三角面からapplyするより、四角面からapplyしたほうがキレイみたい。
まぁ実際にapplyする場面って、エクスポートするときくらいですけどね…

2008年5月8日木曜日

blender - PythonのNode実験(1)

単純にノードの移植に使うのも芸が無いと思って、こんなクソコードを書いてみた。
(マテリアルノード用)


import Blender
from Blender import Node

outline = (1.0, 0.0, 0.0, 1.0);

class MOutline(Node.Scripted):
def __init__(self, sockets):
color = Node.Socket('color', val = [1.0, 1.0, 1.0, 1.0])
sockets.i = [color]
sockets.o = [color]

# xmin, xmax = { y : x, ... }
# ymin, ymax = { x : y, ... }
self.xmin = {}
self.xmax = {}
self.ymin = {}
self.ymax = {}

def __call__(self):
ocol = self.i['color']

x = self.shi.pixel[0]
y = self.shi.pixel[1]

if y in self.xmin:
if x < self.xmin[y]:
self.xmin[y] = x
if x == self.xmin[y]:
ocol = outline
else:
self.xmin[y] = x

if y in self.xmax:
if x > self.xmax[y]:
self.xmax[y] = x
if x == self.xmax[y]:
ocol = outline
else:
self.xmax[y] = x

if x in self.ymin:
if y < self.ymin[x]:
self.ymin[x] = y
if y == self.ymin[x]:
ocol = outline
else:
self.ymin[x] = y

if x in self.ymax:
if y > self.ymax[x]:
self.ymax[x] = y
if y == self.ymax[x]:
ocol = outline
else:
self.ymax[x] = y

self.o['color'] = ocol

__node__ = MOutline


これは何かというと、1ピクセルのエッジをマテリアルノードで出したかったので、
1ピクセル毎に渡されてくる座標をマップ(辞書)に保存しておいて、
とりあえずxとyが最小最大になるピクセルの色を変えてみた、というコード。Pythonは興味なくて、いつもクソコードばかり書いてすいません。
しかもこの方法は、凹型だと間に線が出ないので、全く実用的では無いんですが、テストということで。(本気でやるなら、凸包のアルゴリズムを使用するのと、下記のプレビューで使用されてる問題を何とかしないといけない。それかpixel以外の入力を使って何とかするか…)


最初のcallで保存しておいて、2回目のcallで色を変えることを前提にしてます。
今までのノードでは、こんな使い方は出来ないんですが、__node__はグローバル領域に置いてあり、
updateのタイミングでしか再生成されないっぽい?と感じ、やってみました。

結果はこちら



やはり予想通りupdateのタイミングでしか再生成されないようです。よって、1度目のレンダリングでは真っ赤になりましたが、2度目のレンダリングでこの通り、1ピクセルのエッジが出ました。ただし、この__node__は、マテリアルパネルのプレビューや、NodeEditorのプレビューにも使われているので、その分余計な座標も保存されるので、使えないかなぁー


しかし、今回の実験で、かなりの可能性を秘めていることが分かったと思います。
まぁ、こんなクソコードよりも、ここにある素晴らしいサンプルが参考になります。

もうこれは、Nodeというかシェーダープログラミングに近いですねー。

blender - PythonのNodeが実装されてた

ここ最近コーディング:モデリング=9:1くらいだったので、Blenderを全然触ってなかったんですが、
そろそろモデリングも再開しようと思います。

さっそく、2.46RC4をダウンロードしてきて、ノードみたら



!?!?



!?!?!?!?!

これはもしや…と思い、リポジトリ覗いてみたら、

ttps://svn.blender.org/svnroot/bf-blender/trunk/blender/source/blender/python/api2_2x/Node.c

に、以前「まだ使えねーよ」と書いてあったのが消えてました。

また、

ttps://svn.blender.org/svnroot/bf-blender/trunk/blender/source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c

こんなのも追加されている模様。



早速、ちょっと探してみると

使い方発見!!!

やってみた



これで、複雑なノードをスクリプトに埋め込んでおいて、簡単に切り替えたりできそうですね!!!
開発者の人GOODJOB!!!!!


まだ余り触ってないので、どの程度できるのか分からないんですが、後でマテリアルエッジをスクリプト化に挑戦してみます。

2008年5月6日火曜日

blender - ファイルフォーマットを書き換えたい(20)

座標系とか結局分かってないんだけど、それなりにできちゃってるからいいか。


TODO:
・カメラの拡大率が変になる現象を何とかする@DirectX
・1つの頂点に影響するボーン数を可変に@コンバーター
・選択エクスポート@エクスポーター
・行列と逆行列のみ吐いて、親の行列と掛けたり余計なことはしない@エクスポーター
・Camera、Action、Mesh、Armatureを分けて吐き出す@エクスポータ、コンバーター
・ボーンの入ってないMeshの座標系が上手くいかない@さっぱりわからないので後回し

座標系、図にしてみた。

2008年5月4日日曜日

etc - TOYSTUDIOが凄すぎる

フリーでリアルタイムにスキンメッシュアニメーション作れて、Xファイルその他吐けるみたいです。

http://kotona.bona.jp/


こりゃ凄い。MikuMikuDanceはフォーマット公開されてないけど、これならXファイルかFBX?形式で、スキンメッシュアニメーション吐けそうですね。

・・・もっと早く知っていれば・・・。


まぁしかし、全ての作業をBlenderで行いたいし、今後ノードとかとも連携させたいので、俺のやってることの方向性は間違ってないはず…。DirectXのコードはどっちにしろ書かないといかんわけだし、根元から理解できるし。(ということにしておきたい)

現在カメラを処理中。


-------------

pixivが投稿した絵の、使用ツールを選択できるようになったらしい。
Blenderがちゃんと入ってたので、登録してみた。

http://www.pixiv.net/


pixivは、超初期のころ登録してたのですが、個人製作のウェブサービスって感じで(実際作者はプログラマ1人)、そのときは人数も少なかったのですが、ここまでユーザー増えるとは。しかもブックマーク機能もついたりしてて、よりSNSっぽくなってますね。ただ、こういうサービスをビジネスに繋げるのは大変なんだろうなーと思います。

何で1度やめたかというと、絵は見せるものなのにクローズドで公開しても意味無いじゃんと思ったからで、何でまた登録したかというと、そういや過去の出来が良い(と個人的に思ってる)絵が、どこいったか分からなくなることって多いから、それを登録しておくと、後々探すのが楽かなーと思ったからです。最初と比べて、かなり3D作品も増えてて、しかもレベル高くて、目の保養になります。

登録にあたって、1枚ひさびさにレンダリング。


-------------------------

カメラがうまくいかない・・・


------------------------

ちょっとマシになった。実はカメラじゃなくてオブジェクトがおかしかった模様。

2008年5月1日木曜日

blender - ファイルフォーマットを書き換えたい(19)



xmlを吐くBlender(やりたいほうだい)
http://render.jp/blender/blender245xml_03.zip
前回からipo周りを吐くのをやめて(といってもソースには残してる)、pose吐いてます。
ソースは、GUI周り少しいじったので、修正点書くのがめんどい。
でもSVNでうpするのは、容量多すぎで、もっと面倒だしなぁ。
ドキュメントも書くのがめんどい。
…まぁそのうち。



コンバーター
http://render.jp/blender/xmlconverter03.jar
上のBlenderで吐いたxmlを、DirectXで読み込みやすいxmlに変換します。
ただし、現在入力のxmlは、全て三角面前提、Meshの親はArmature前提、1ファイル1Mesh1Armature前提となっております。

気が変わって、近々ソースコードも、うpするかもしれない。
それにともなって、ゴミ同様のクソコードを書き直し中…。

Xファイルも吐けるようにしてたんだけど、どうも骨が多いと?Xビューワでアニメーションできない。
多分自分でXビューワ作れば、出来るんだろうけど、その予定は無いので、スッパリ切り捨てました。



お試し実行ファイル。(release/dx_test1.exe)
最新のDirectXランタイム必須。
http://render.jp/blender/dxtest03.zip
前回の動画は、実はライトがオブジェクトの中にあったので光が変だったというオチでした。
今回のは、「別にトゥーンにするからライトいらね」ということで、ライトオフにしてます。
動画のエンコで彩度が落ちてちょっと残念。