月別アーカイブ: 2013年5月

JMEにおけるマテリアルの制限

ドキュメントを読んでたらそんな気はしてたけど、実際JME(jMonkeyEngine)のIDEを動かして確認してみたらやっぱりそうだった。JMEではオブジェクト一つにつきマテリアルは一個まで!
がーん、いままでBlenderで作ったモデルは思いっきり多種なマテリアルを使って色分けしてたので、直さなきゃいかんなー。

ここを読んでみても、開発者にはその方針を変える気はないようだ。
http://hub.jmonkeyengine.org/forum/topic/different-materials-for-one-object/

OgreXMLでもオブジェクト一つに多種マテリアルは持てるようにしてあるし、出来たらサポートして欲しいけど、仕方ない。JMEではテクスチャ主体でいくことになりそうだ。

 

ミスターOgre

いや、オーガさんですけど。

現在もJME(jMonkeyEngine)のドキュメントを読んでいるところではあるが、その中で一番気になるのは、やはりBlenderのファイルを読み込む機能だ。これが出来なければ、何も始まらない。

ここらへんを読んでいると、予想してはいたけど、JMEで読むためにはBlenderの編集でそれなりの制約があるようだ。
http://jmonkeyengine.org/wiki/doku.php/jme3:external:blender

まず、JMEではBlenderがまんま出力するblendファイルを読むことは出来ない。BlenderでOgreXML形式でエクスポートし、JMEでさらに最適化された専用のファイルに変換しなければならない。

(訂正。どうもblendファイルのまま読み込めるクラスが用意されているようだ。あと、OgreXML形式のまま読み込むこともできる。)

OgreXMLにエクスポートするBlenderのアドオンはとりあえず、blender2ogreというのを入れてみた。
http://code.google.com/p/blender2ogre/

このアドオンを利用するにはogreのコマンドラインツールをインストールしておく必要がある。(Ubuntuではsudo apt-get install ogre-tools で可能)

まだあまり検証してないけど。明日はテスト用に作ったモデルを使っていろいろ検証するぞ。

Screenshot from 2013-05-29 00:05:58
これがテスト用モデル。どーも、ども。

 

 

JME3でアプレット(メモ)

たまたま見つけたJME3(jMonkeyEngine3)でアプレットする方法。後で役に立つかな?
http://www.streamhead.com/tutorial-jmonkeyengine-applet-hardware-3d-in-the-browser/

ついでにAndroid。まだやる気はないけど、いずれか。
http://jmonkeyengine.org/wiki/doku.php/jme3:android

それにしても、JMEの公式チュートリアルは本当に良い。英語だけど、すごい親切。まだHelloWorld系をコピペして動作確認してる程度だけど、なんだかほんとうに作れる気になってきたぞ!

はじめての猿人さん

今日からJME3(jMonkeyEngine3)を始めた。JME3はJavaの3Dゲームエンジンである。Blenderのファイルが使えるライブラリで探したら見つかった。Blenderのファイルが使えるゲームエンジンでは他にUnity3DとBGE(Blender Game Engine)がある。

このJME3、Unity3D、BGEの3者を比較して、JME3を選んだのは以下の理由がある。

まず、選択基準で重視するのはスマートフォンの移植性。これからの時代、スマホ展開は必須でしょう。

その選択基準でまずBGEは外される。というか、BGE自体Blenderがないと何も出来なくて、かなり動作環境は限られちゃうのよね。Blender上で直接動作確認できるのと、プログラム知識無くても気軽に組めるのは楽しそうだなと、それ系の動画観てて思ったけど。

それとは逆に、Unity3Dの動作環境は幅広い。PCやスマホはもちろん、WiiやPS3などのコンシューマにも移植できると唄っている。またプラグインを組み込めばFlashのようにWebブラウザでも動作することは可能だ。プログラム言語もC#かjavascriptだけでいいときている。それゆえ、Webを見る限りではUnity3Dの人気はこの3者の中でダントツである。人気だからWebの資料も豊富だ。

でも、こんだけ層のぶ厚いライブラリってちょっと警戒しちゃうのよね。スマホ(android)の言語はJavaだけど、それをC#で書けちゃうというのだから、なんらかの変換をしているのだろう。確かにC#とJavaは似ている言語だけど、本当に大丈夫か?って気がする。バグとかあって延々と悩みそうな問題にぶち当たりそうなのが怖い。あと、スマホへの変換はどうも有料らしい。(斜め読みで確認したので嘘かも)

JME3はJavaとOpenGLの動く環境ならけっこう動くようだ。スマホはOpenGLの軽量版OpenGLESなので、スマホは本当に移植できるか不安が残るが、最悪グラフィック関連は動かなくてもロジック部分はJavaということで移植できるだろう。

あと、JME3はオープンソースなので安心感がある。Unity3Dはソースが一つの業者によって握られているので不安が残る。なんか後になってコレ使うには金をよこせーとかなりそうな。かつてのGIFの特許問題とか見てきたらどうしても疑ってしまう。

というわけで、現在JME3を勉強中です。JME3のIDEはNetBeansをベースにしてて、eclipseよりNetBeans派なぼくには好印象。あと、オフラインマニュアルが充実してるのもいいね。Unity3Dに対抗しているおかげかな。

ようやくこのブログでSourceForgeらしい話題がでてくるようになった。初投稿以来つかっていなかった「ソフト開発」のタグをこれからガンガン使っていくよ。ちなみに「ソフト技術」のタグはUbuntuとかプログラム以外の話題で付けてます。

jMonkeyEngine3
http://jmonkeyengine.com/

Unity3D
http://japan.unity3d.com/

2013/06/14
Unityのスマホ向けアドオンが無償化してたらしい。
http://japan.unity3d.com/blog/?p=1075

 

今回のボーン構成のまとめ

とりあえず、swordman20130514.blendにおける左腕部分のボーン構成をまとめてみた。

memo_armature

これで何が出来るかというと、

(1)upper_arm.ctrl.Lとforearm.ctrl.Lボーンのスケールを変えることで上腕、前腕の長さを決めることが出来る。

(2)upper_arm.width.Lとforearm.width.Lボーンのスケールを変えることで上腕、前腕の太さを決めることが出来る。

(3)arm.ik.Lを操作することでIK的なアーム操作が出来る。

(4)shoulder.Lを操作することで肩の位置を任意に決めることが出来る。

仕組み的なポイントとしては、

– meshにウェイト配分するボーンはchest.L、shoulder.L、upper_arm.L、forearm.L、wrist.Lのみ。他のxxx.width.Lやxxx.ctrl.L、arm.ik.Lはウェイト配分しない。

– xxx.Lからxxx.ctrl.LへCopyRotationしているが、これをしないとxxx.Lがぐるんぐるん回ってしまうぞ。

– 他のボーンのスケール操作の影響を受けたくないボーンにはRelationsカテゴリにあるInherit ScaleをOFFにしておくこと。

– StretchTo拘束はいずれもVolumeをNoneに設定している。これでY方向のみをサイズ変更ができる。CopyScale拘束ではXとZのみをコピーしている。

今回一番苦労したのは腕の太さと長さを個別に設定でき、かつIK操作ができることを目指したことだ。CopyScaleとIKのボーン拘束はとことん相性が悪く、IKの影響下にあるボーン(xxx.ctrl.L)にCopyScaleを適用すると変な形に変形しまくって暴走する。IKの影響下にあるボーンはポーズモード時に素直にSキーでスケール変更した方が良い。

また、肩が自由に動かせるのもなにげに大事。二頭身キャラである程度強引にポーズを見せるには肩の位置も動かしたほうがしっくり来ることがある。

(今回はgitでblog20130522のタグをきっておきました。)

ヨガガガ

ようやく、思い通りのボーン組みが完成できた。
で、昨日の日記の訂正。

ポーズモードでのCtrl+Alt+Sでスケール変更してもポーズにまったく反映されない。Sキーのみでスケール変更すること。

StretchToボーン拘束は、やっぱり必要だった。

今回のボーン構成は、いずれまとめたいと思う。で、今は腕や足を自由に伸ばしてポーズをとっていろいろ試してみてるのだが、いまのところまだシックリこないなぁ、、。

ヨガ!ヨガ!

Blenderのボーン拘束、StretchToとIKが両立するようなボーン構成をずっと試行錯誤してたのだが、できなかった。でも結局、やりたかったボーン構成にStretchToは不要だったことに気づいた。ポーズモードのとき、Ctrl+Alt+SやSでボーンを拡大縮小すればいいだけなのねん。

モデリングは楽しいけど、ボーン埋めは相変わらず気が重い工程だなぁ。

ヨガファイアさん

Blenderで動画作るのは保留にし、とりあえず新しいモデルを作っている。前回の半魚人同様に二頭身キャラなのだが、二頭身キャラを3Dで動かすとき、腕の長さや足の長さを伸縮自在にしないと思うようなキャラの動きが作れないんじゃないかと思っている。

ボーンを伸縮する方法を調べていたら、このブログからよさそうなサンプルを見つけた。これによれば、ボーンのContraintsからStretchToというのを適用すればいいらしい。真似してやってみているが、なかなか扱いが難しくて苦戦中。TrackToとかいうのも併用するのかな。

ダルシムの初期状態は手足が伸びたままという説。

ボーンのミラーコピペにバグ?

Blenderのボーン埋めで基本的なコピペテクニックとして、
1 左側のボーンを選択
2 Duplicate(Shift+D)
3 X軸方向に-1倍Scale(S+X+-1)
で右側のボーンをコピペで作ることができるという方法がある。このやり方は左右が逆でも同様にできる。3はArmatureメニューのMirrorという項目を選んでも同じ。

たいていはこのやり方で上手くいくはずなのだが、今作っているモデルでは以下の絵のように上手くいかなかった。

Screenshot from 2013-05-16 14:23:28

これは3を実行した直後なのだが、オレンジで選択されている腕のボーンをはじめ、いろいろ右側のボーンの配置が微妙に狂っている。いろいろ調べたら以下のブログでもこの問題に触れていました。
http://yuuji000.exblog.jp/8693287/

このブログでは各ボーンのRoll値がおかしくなっているらしい。バグかも?ということだけど、このブログのバージョンは2.49cで自分が再現したバージョンは2.66aだ。そうとうな期間放置されているバグということになってしまうが、、。うーん。

解決策としては、3DViewのツールバーにあるX-AxisMirrorのチェックをONにして、左側(コピペ元)のボーンを選択、Rキーを押すと右側(コピペ先)のボーンも直るということだ。

半魚人のボーンもなんか変な動きしてたことあったから、それのせいかもなぁ、、。ミラーコピペの後は上記のRキー操作は念のためにいつもやった方がいいかもしれないね。

UbuntuのAlt+右クリックのショートカットを解除する。

Blenderではメッシュ選択時にAlt+右クリックすると、くるっと一回り連続で選択できて便利である。

でも、これはUbuntuの既存ショートカットと競合し、ウィンドウ操作系のポップアップが出現する。調べたら、以下のやり方でUbuntuのそのショートカットを解除することができた。
http://askubuntu.com/questions/70392/how-do-i-disable-the-alt-right-click-keyboard-binding

手順メモ

(1) ccsmをインストールし、sudo ccsm して立ち上がった画面からCCSM ▸ General ▸ General options ▸ Key bindings ▸ “Window Menu” とたどっていき、その項目が「Alt + Button3」となっているので、クリックしてEnabledのチェックを外す。

(2)dconf-toolsをインストールし、dconf-editorで起動する。org -> gnome -> desktop -> wm -> preferencesとたどり、mouse-button-modifierの欄が<Alt>となっているので、消して無効にするか、<Super>(Winキー)などにして代用する。

これで解除できた。もしかしたら再起動が必要かもしれない。(1)を試して、解除できなかったので(2)を試した。もしかしたら(2)だけで十分かもしれない。