2009年6月28日日曜日

etc - ソースコードを書きながら寝ない



D3DDECLTYPE_D3DCOLOR じゃなくて D3DDECLTYPE_FLOAT3 にしたら色付いた!
なぜっ!!!!



ついでに厄介なエクスポータのバグが色々直った。
もうDirectX9でやっちゃおう。

2009年6月27日土曜日

etc - 買い物

今日は新宿へ。

プロシージャルなんたら本を買いに紀伊国屋に行ったのですが、
1時間くらい粘って悩みまくった末、

シェーダのところとか、高速化のところと、顔の表情テクスチャのやつとか、フラクタルの半分くらいとか、たぶん使わなくて、自分が使うとしたら最初のノイズ関数のところと雲くらいなので、無理して買う必要ないかなー
→よし、グラボを買おう→あ、DirectX11対応のが出るまで待つんだった→


CDラベル印刷可能なプリンターと、MIDIキーボードを買って帰りました。

2009年6月24日水曜日

etc - 2.5が出たら本気出す

最近の俺のアンテナ(と、第一印象)

・Texturing & Modeling A Procedural Approach Third Edition 日本語版 (単行本)
・sunflow(美人
・moonlight(惜しい
・googletest(草食系
・LLVM(イケメン
・NetBeans support for Google App Engine(あとで試す
・Project jacuzzi(あとで試さない
・TortoiseGit(まぬけな亀)
・Google Native Client(無茶だっ)
・O3D(名前がダサイ。↑と融合したら時期Firefox4のFlashに対抗できるか?)


今週末は、カメラ付き3Dゲーとか、ダンスなんたらとか、上に書いてる単行本とか発売で、来月はセガの初音ミクのゲームとか発売ですねー。

お金ないので、とりあえず本のみ買おうと思います。

2009年6月21日日曜日

blender - グッスマぽーず



とりあえず、買ったらやるでしょう、当然。



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


リテイク。ん、ちょっとおかしくなったかな…





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

再リテイク。

2009年6月20日土曜日

etc - 6.20 in AKIBA

今日は中野へ行って、うろうろした後、秋葉原へ。


ついに買ってしまった。人生初フィギュアです(ゲーセンで落としたものを除く)
↑は未開封中古6300円だった。ほかのところは値段相変わらず高騰してた。



その他
DanceMixierのイベント見てきたよ!2分くらい。
立ち見で最後尾に一瞬いたんだお。
でも見えなかったから「自作モデル使える」つーのを一瞬空耳かもしれないけど聞いたような気がして、パンツ‥じゃなくてパンフもらって満足して立ち去りました。他には、「神になれますよ」とか言ってた気がする。

その他購入物

・アニメージュ (「ですぺら」目当て)
・Windows100%(ISAOさんのモデルデータ目当て)
・とらのに(十矢さんの3Dアニメな同人)
・君と出会って二年過ごした私が微妙に変った理由(有名だから)

2009年6月18日木曜日

blender - 今日の飛行訓練


撮り貯めといて、いつかPVってなったときに穴埋めで使えるかな

blender - パンツ

DX11対応ボードが出るまで、普通にBlenderで何か作るほうにシフトしようかなー。
特に建物とか背景とか貯めときたい。


相変わらずGLSL。相変わらず雲のクオリティしょぼす。
GLSLだけでやるって方針は変わらないと思うんだけど、クオリティ低かったら意味無いし…。
クオリティ上げていく方向でがんばろう。きっと適当に作ってても、DirectX11なら何とかなるはずっ・・・!(だといいなー)
サーニャを飛ばしたいんだけど、前からいじってないので、何も出来てない。早く作ろう・・。

あと、読書時間を作らないとヤバイ。あと2時間早く起きよう・・・。(今は始業30分前に起きている)

2009年6月14日日曜日

etc - FragmentLinker

ここ1週間やってたけど諦めた。

FragmentLinkerとは何かと言うと、DirectX9のShaderModel3から(多分October2004から)ついていると思われる、HLSLシェーダの動的リンクシステムである。

うちのブログ的に分かりやすくいうと、Blenderのノードみたいな感じでシェーダを動的に、高速に繋ぎかえられるシステムである。

それを使って、何をしたいかというと、BlenderのGLSLMaterialsを、完全にDirectXアプリまで持ってきたい。

例えばこんな感じのを盛り盛りと何十個も作る。

//-----------------------------------------------------------------------------
// エッジの太さ計算
//-----------------------------------------------------------------------------
void vs_edge_calc_(
in float4 pos : POSITION,
in float3 nor : NORMAL,
out float4 edge_val : r_edge_val)
{
float4 dN = float4(normalize(nor.xz), 0, 0);
edge_val = pos - dN * edge_color.w * pos.w;
}
vertexfragment vs_edge_calc = compile_fragment vs_2_0 vs_edge_calc_();

話が本当なら、こうして作ったものを、必要なだけセットすれば、シェーダが1つ出来上がるはずである。

で、試していたんですが、うわさどおり全然使い物にならなかったです。

なんか頂点シェーダに色が渡らない・・・。頂点宣言がマズイのか、何がマズイのか。
普通のシェーダなら通るんだけどなー。

じゃあってことで、頂点シェーダ共通にして、ピクセルシェーダだけフラグメント

PixelShader MyPixelShader;

technique render_scene
{
pass p0
{
VertexShader = compile vs_1_1 vs_main(0, 0, 0, 0);
PixelShader = <MyPixelShader>;
}
}

にしても通らない。

ググっても、google code searchで検索しても全然出てこないから、これはもう全くダメなんだろうなー。
万が一出来たら超ラッキーと思ってやってみたものの、時間の無駄でした。

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

じゃあどうするか。
敷居が低いほうから考えると、
プリプロセッサ(#defineとか)で静的に作っといて、フローをあらかじめ決めとくやり方と、
関数盛り盛り作っといて、ノード情報から上手く並び替えて作るやり方、
があるんだけど、低いつっても超高いし、今やDirectX11とか言われてるのに、こんなもん頑張って完成したところで時代が変わってる。

幸いDirectX11にはdinamic shader linkageというのがあるようなので、そちらを試していきたい次第。compute shaderもあるしね・・・。

自分1人で使うなら、前作ったシェーダ読込みシステムで十分なんだけど、ノードと連携して、将来的にアレコレやるとなると、XPを切り捨ててでも、DirectX11に手を出す必要がありそうだ~

2009年6月13日土曜日

etc - 難航中・・・

なんか出た。



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

マテリアルのやつ、こういう感じにしようと思ってるんだけど、うまくいかない・・・
(↓合成じゃないよ)


ちなみに、内部では全プレビューパネルにおいて、
"Preview"という名前かどうかでプレビューパネルかどうかが判定されていた。
なんじゃそりゃwww

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


上の2つ含めて4つくらい同時進行しているんだけど、全部上手くいかね~!

土日のうち最低4分の1は外出することに決めてるので、今日は新宿へ。
必要なものが全部新宿で揃ってしまうから、中々あちこち行く気にならない・・・。
今日はヨドバシで扇風機を2980円で購入。


あと、気付いたら

VOC@LOiD M@STERの応募締め切り終わってた。

まぁいいや、今年も冬を目指そう・・・。

etc - AppEngine(2)

予想以上にハードル高いぞー。

以下、良く分かってないけど書いてみる

画像うpして表示したいんだけど、

保存は GoogleDataAPIs とかいうのを通じて、Google様のDB(多分BigTableを使用)にしかうpできない。
それに保存するためには、Google様のリフレクションを用いて、シリアライズ可能なクラスに詰め込まないといけない。
さらに保存したものを取得するには、<img src="ほにゃらら.jpg"とかいうHTMLを普通使うと思うが、URLが無いので、動的にほにゃらら.jpgのアドレスを作って、そいつが呼ばれたら、DBから画像取得して、contenttypeがimage/jpgで、ほにゃらら.jpgを含んだストリームを、返すようにしないといけない。(多分

で、うpするときの送信だけど、
org.apache.commons.fileuploadを使うのが一般的みたい。
あんまり色々ごちゃごちゃと使いたくないんだけど、Google様のFAQに、これ使ったコードが書いてあるから、大人しく使う。





しかし、無料でDBとJSPとサーブレットが使えるなんて、いい時代!

2009年6月11日木曜日

etc - Google様が大都市の3D化を開始したようです

@IT - 日本では東京・京都・大阪・神戸の4都市からスタート
Google Earthの都市が3D化
http://www.atmarkit.co.jp/news/200906/10/earth.html


-------

Google様!そんなことより早く俺にGoogleAppEngineの承認メールを…!
実は既に承認されてたっぽい。appengine-web.xmlの記述ミス!なんてこった!ごめんなさい

-------


Blender2.49ビルドしようと思ったらリンクエラー大漁だったので、思い切ってVS2008入れた。
VS2008はDreamSparkから入手したもので、商用じゃあ使えないんだけど、Blenderは商用じゃないから問題なし。

2009年6月10日水曜日

etc - AppEngine

Google様のAppEngine登録してみた。
最近Javaでも使えるようになったらしい。

Java使えるけど、実はサーブレットは全然使ったこと無いです。
よって、AOPとかDIコンテナとかO/Rマッピングとか、その辺全然知らないです。
Springだとか、Hibernateとか、JSFだとか、JSPだとか。

でもHibernateが『ヒキコモル』という意味ってことだけは知ってます。

なんちゃらフレームワークも、色々乱立していた気がするんだけど、現在のトレンドはどうなったんだろう?未だにstruts(+Tomcat)?


そんなこんなで、早速NetBeansでビルドしてguestbookが起動するのを確認。さあデプロイ!って、まだ出来ないのか・・・。明日の夜くらいには出来るようになるかな?

2009年6月9日火曜日

etc - 進捗

シェーダー通った!

これは・・・いけるかも!

よし、寝よう。

2009年6月8日月曜日

blender - 内蔵テクスチャをpythonでパクる(2)

新規起動→F6→適当にInternalTexture選ぶ→実行→UV/ImageEditorを見る

http://patsuko.net/internalimage.txt


ちょっと詰まったのは、Blender.Image.Newにdepth=8入れても32ビットのバッファが確保されてるような気がするところ。諦めて32ビットにグレースケールぶち込んで解決。




import Blender

# export settings ------------------------------------

# glay_scale -> 8, color -> 32
IMAGE_DEPTH = 8

#detail
GENERATE_DEPTH = 2

TEXTURE_NAME = "internal_texture"
WIDTH = 512
HEIGHT = 512

#------------------------------------------------------

def write_texture_to_image(image, tex, w, h, image_depth, generate_depth):
image.makeCurrent()
dep = generate_depth
for y in range(h):
for x in range(w):
xyz = (1-x/float(w)*dep, 1-y/float(h)*dep, 0)
pixel = tex.evaluate(xyz)
if (image_depth==8):
pixel[0] = pixel[1] = pixel[2] = pixel[3]
image.setPixelF(w-x-1,h-y-1,pixel)

textures = Blender.Texture.Get()
if len(textures) and textures[0].users:
image = Blender.Image.New(TEXTURE_NAME, WIDTH, HEIGHT, 32)
write_texture_to_image(image, textures[0], WIDTH, HEIGHT, IMAGE_DEPTH, GENERATE_DEPTH)

2009年6月7日日曜日

blender - 内蔵テクスチャをpythonでパクる

ブログ右で投票してくれた方々、大変ありがとうございます!
D&Dが簡単そうだからD&Dにならないかなーと思っていたら、
やはり、一番めんどくさそうなマテリアル一覧になってしまったようです。
2.5では見やすくなってないんでしょうか・・?(全く触ってないのでシラネ)

まぁ、そんな直ぐ出来るもんじゃないので気長にお待ちください・・・。

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

さて、ぼーっと眺めてたら良さそうな関数を見つけたので。
内蔵テクスチャを画像として取っておきたいとかいう人(いるのか?)はスクリプトで出来そうですよっと。


import Blender

def print_texture(tex, w, h):
for x in range(w):
for y in range(h):
xyz = (x/float(w), y/float(h), 0)
print x, ",", y, ":", tex.evaluate(xyz)

textures = Blender.Texture.Get()
if len(textures) and textures[0].users:
print_texture(textures[0], 64, 64)




ググってて見つけるんじゃなくて、ソース内検索で見つけることのほうが多いこのごろ。

英語のほうには載ってた。
http://www.blender.org/documentation/248PythonDoc/



何でこんなの探してたかというと・・・GLSLとかエクスポート時とかで対応したいなーということで。

2009年6月5日金曜日

etc - 立方体

ついに立方体のワイヤーフレームが出ました!

なかなかしんどい。



ここまでくれば、あとはサクサク進むはず・・・だといいなー。

デバッグ出力して確認する時間が勿体無いからって、一気にうりゃー!と複雑なコード書いてただけに、かなりほっとした。

読込みも、PBベースで全面的に書き換え中。


早く、どるどる程度が出来るレベルまで持って行きたいなー。


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

~買い物~

アオイホノオ2巻購入

バクマン。3巻購入


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



ようやく何か出た・・・


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

・全面を1回イテレートしている最中に
・マテリアルごとにsubset分割しながら
・四角面→三角面変換しながら
・UVと重複頂点考慮した面インデックス再生成しながら
・左手系を右手系に変換しながら
・ボーン影響数が一定以上になったらsubset分割しながら
・出来るだけ中間でメモリ使わず、直に吐き出し用pbにぶち込む

までいけた。Visiterパターンとか使うべきなんだろうか・・・。でもエクスポーターなんて書き捨てだしなー。



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


ふぅ・・・。ボーン読込むには読み込んだ。

これからが本番!
本当に出来るのか分からないし、やることもぼんやりとしか頭に無い。

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

あと、最近MMDのほう、何か"出そうな予感"がしていたので、やってなかったんですが、
Bullet搭載きましたね!

ハードルが上がってゆく~

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

進捗
・テクスチャ吐き出しおk。(textureスロットのimage付きテクスチャ(packされているものも含む))

次こそ山場!

2009年6月2日火曜日

etc - dancemixer

MMDっぽいソフトが6月26日発売予定だそうです



http://dancemixer.jp/product.html


おそらくDirectX9系列だと思います。
キャラもかわいい!さすがプロ!


結構気になるので、6月20日は仕事とか無かったら秋葉原にいってみようかな~

2009年6月1日月曜日

etc - 3Dキャラアニメな良書が出たそうです

実はISAO本もスーパーテクニックもローポリモデリングも買ってない俺ですが

3D Character Animation Manual ローポリアニメーションのすべて
http://www.amazon.co.jp/dp/4797352280


これは買う!!!かも