SprBlenderでのキャラクタ開発 をテンプレートにして作成
開始行:
[[devel]]
* SprBlenderのインストールの方法 [#a7c5ac0b]
+ Blender最新版をインストールする
+ Springhead2をチェックアウトする(既にある場合は最新版に...
+ svn+ssh://springhead.info/home/svn/spr2/SprBlender/trun...
c:\Projects\Springhead にSpringhead2があるとしたら
c:\Projects\SprBlenderにチェックアウト
+ SprBlenderフォルダにある install.bat を''管理者権限で''...
-- install.batを右クリックして管理者として実行を選ぶ。
-- 途中で「開発者モードでインストールしますか」と聞かれた...
Kogumaを実行するには
+ svn+ssh://springhead.info/home/svn/lab/Experiments/trun...
+ Experiments\SprBlenderExamples\Koguma3GS\koguma3gs_sitt...
* ルールスクリプトの在処 [#rf711917]
- koguma_leap3_delaysel.blend の場合
-- init
--- koguma_leap3_delaysel_rule_Koguma_init.py
-- step
--- koguma_leap3_delaysel_rule_Koguma_step_bpy.py
- Blender内のText Editorで編集してもよいし、外部のテキス...
-- 外部のテキストエディタで編集した場合は、creatureのUpda...
- 将来的には、他の.blendで使われていると共通するコードは...
* Creatureの処理の流れ [#j7c22318]
- 初期化時
-- creature_init
--- Updateボタンを押した時に呼ばれる。初期化用。
- 実行時
++ 物理シミュレーションステップ
++ creature_step
-- これとは別に creature_step_bpy が呼ばれる。
--- creature_stepは物理シミュレーションステップ1回につき...
--- creature_step_bpyは物理シミュレーション数回に1回くら...
- stepとstep_bpyの違い
-- stepはSpringheadのタイマから呼ばれる。step_bpyはblende...
-- bpyを呼び出す場合はstep_bpyを使う(bpyをblenderのタイ...
* 関数の見つけ方 [#e13c002a]
- 例
creature_stepの中にある
lookctl.step()
の定義を探す場合
lookctl が出てくる最初の行を init -> step の順に探す
(initの中で変数定義されてるかもしれないし、stepの中かも...
と、initの中に
# Create Look Controller
lookctl = LookController( head, lefteye, righteye)
が見つかる。
LookControllerクラスのオブジェクトということが分かる。
そこでクラス定義
class LookController:
を探す。
クラス定義が見つかったら、step() の定義(def step(...):...
- これで見つからない場合
-- Springheadの関数かも
-- bpyの関数かも
* クリーチャパラメータについて [#efed389e]
- crHnd.get_cr_param("Reach Speed") のようにすると Reach ...
-- この関数が呼ばれた瞬間にGUIにセットされている値が帰っ...
-- なので、stepの中でこの関数が呼ばれている場合は、パラメ...
* キャラクタを構成する全ての剛体・全ての関節についてルー...
- CreatureHandler が CRCreature を持っている。
- CRCreature が CRBody を持っている。
- CRBody が CRBone をたくさん持っている。
- CRBone が PHSolidやPHJoint を持っている。
- したがって、
from spb.abbrev import *
# CreatureHandlerからCRCreatureを取り出す。
# Kogumaはクリーチャを定義するグループ名
crCreature = Cr['Koguma'].spr()
# 最初の(0番目の)Bodyを取り出す
crBody = crCreature.GetBody(0)
# boneそれぞれについて処理する
for bone in crBody.GetBones():
# boneからSolidやJointを取り出す
solid = bone.GetPHSolid()
joint = bone.GetPHJoint()
ikact = bone.GetIKActuator() # ←IKアクチュエータ。Bia...
# ... あとはここでsolidやjointを使った処理をする ...
* ハンドラについて [#a6265418]
- ハンドラはSpringheadオブジェクトとblenderオブジェクトの...
-- .spr() でspringheadオブジェクトを、
-- .bpy() でblenderオブジェクトを取得できる。
* Python Consoleで補完できないことがあるのは何故か? [#jd...
>> Cr['Koguma'].spr(). # ←ここでCtrl+Spaceを押しても補...
こういう時は
>> creature = Cr['Koguma'].spr()
>> creature. # ←ここでCtrl+Spaceを押すと補完が働く
- 何故か?
-- 「Cr['Koguma'].spr()」がどんなクラスのオブジェクトを返...
-- どんなクラスのオブジェクトが返ってくるか分からないと、...
-- Cr['Koguma'].spr()を実行してcreatureに代入すると、crea...
- わざわざ代入するのがめんどいときは以下の様な方法も有効。
>> Cr['Koguma'].spr().dir() [ENTER]
または
>> dir(Cr['Koguma'].spr()) [ENTER]
-- 前者は使えない場合があるので注意。後者は必ず使える。
* クリーチャのグループについて [#fb50277d]
- SprBlenderでクリーチャを作るには、クリーチャ1体を構成...
-- グループパネルは、オブジェクトパネルの中にある。
-- クリーチャに対応するグループは、SprCreature にチェック...
* スクリプトを外部ファイル化する方法 [#tf09979f]
- Text Editの Textメニューから Save as を選択。
- ファイル名を付けて保存する。
-- ファイル名は blendファイル名_ルール名.py とでもするの...
- 次に、ファイルパスを相対パスにする(そのままだと絶対パ...
-- blenderのFileメニューを開き、
-- External Data -> Make All Paths Relative
-- あとは普通にSaveすればOK。
* Pythonのよく見るエラー [#i66b19f2]
- 基本的には分からないエラーメッセージはGoogle検索するこ...
- 'XXXXX' object has no attribute 'yyyy'
-- yyyyという名前のメンバ関数や変数がXXXXXオブジェクトに...
- 'yyyy()' takes N arguments (M given)
-- 引数の数が違う。yyyy()関数はN個の引数を取るのにM個与え...
終了行:
[[devel]]
* SprBlenderのインストールの方法 [#a7c5ac0b]
+ Blender最新版をインストールする
+ Springhead2をチェックアウトする(既にある場合は最新版に...
+ svn+ssh://springhead.info/home/svn/spr2/SprBlender/trun...
c:\Projects\Springhead にSpringhead2があるとしたら
c:\Projects\SprBlenderにチェックアウト
+ SprBlenderフォルダにある install.bat を''管理者権限で''...
-- install.batを右クリックして管理者として実行を選ぶ。
-- 途中で「開発者モードでインストールしますか」と聞かれた...
Kogumaを実行するには
+ svn+ssh://springhead.info/home/svn/lab/Experiments/trun...
+ Experiments\SprBlenderExamples\Koguma3GS\koguma3gs_sitt...
* ルールスクリプトの在処 [#rf711917]
- koguma_leap3_delaysel.blend の場合
-- init
--- koguma_leap3_delaysel_rule_Koguma_init.py
-- step
--- koguma_leap3_delaysel_rule_Koguma_step_bpy.py
- Blender内のText Editorで編集してもよいし、外部のテキス...
-- 外部のテキストエディタで編集した場合は、creatureのUpda...
- 将来的には、他の.blendで使われていると共通するコードは...
* Creatureの処理の流れ [#j7c22318]
- 初期化時
-- creature_init
--- Updateボタンを押した時に呼ばれる。初期化用。
- 実行時
++ 物理シミュレーションステップ
++ creature_step
-- これとは別に creature_step_bpy が呼ばれる。
--- creature_stepは物理シミュレーションステップ1回につき...
--- creature_step_bpyは物理シミュレーション数回に1回くら...
- stepとstep_bpyの違い
-- stepはSpringheadのタイマから呼ばれる。step_bpyはblende...
-- bpyを呼び出す場合はstep_bpyを使う(bpyをblenderのタイ...
* 関数の見つけ方 [#e13c002a]
- 例
creature_stepの中にある
lookctl.step()
の定義を探す場合
lookctl が出てくる最初の行を init -> step の順に探す
(initの中で変数定義されてるかもしれないし、stepの中かも...
と、initの中に
# Create Look Controller
lookctl = LookController( head, lefteye, righteye)
が見つかる。
LookControllerクラスのオブジェクトということが分かる。
そこでクラス定義
class LookController:
を探す。
クラス定義が見つかったら、step() の定義(def step(...):...
- これで見つからない場合
-- Springheadの関数かも
-- bpyの関数かも
* クリーチャパラメータについて [#efed389e]
- crHnd.get_cr_param("Reach Speed") のようにすると Reach ...
-- この関数が呼ばれた瞬間にGUIにセットされている値が帰っ...
-- なので、stepの中でこの関数が呼ばれている場合は、パラメ...
* キャラクタを構成する全ての剛体・全ての関節についてルー...
- CreatureHandler が CRCreature を持っている。
- CRCreature が CRBody を持っている。
- CRBody が CRBone をたくさん持っている。
- CRBone が PHSolidやPHJoint を持っている。
- したがって、
from spb.abbrev import *
# CreatureHandlerからCRCreatureを取り出す。
# Kogumaはクリーチャを定義するグループ名
crCreature = Cr['Koguma'].spr()
# 最初の(0番目の)Bodyを取り出す
crBody = crCreature.GetBody(0)
# boneそれぞれについて処理する
for bone in crBody.GetBones():
# boneからSolidやJointを取り出す
solid = bone.GetPHSolid()
joint = bone.GetPHJoint()
ikact = bone.GetIKActuator() # ←IKアクチュエータ。Bia...
# ... あとはここでsolidやjointを使った処理をする ...
* ハンドラについて [#a6265418]
- ハンドラはSpringheadオブジェクトとblenderオブジェクトの...
-- .spr() でspringheadオブジェクトを、
-- .bpy() でblenderオブジェクトを取得できる。
* Python Consoleで補完できないことがあるのは何故か? [#jd...
>> Cr['Koguma'].spr(). # ←ここでCtrl+Spaceを押しても補...
こういう時は
>> creature = Cr['Koguma'].spr()
>> creature. # ←ここでCtrl+Spaceを押すと補完が働く
- 何故か?
-- 「Cr['Koguma'].spr()」がどんなクラスのオブジェクトを返...
-- どんなクラスのオブジェクトが返ってくるか分からないと、...
-- Cr['Koguma'].spr()を実行してcreatureに代入すると、crea...
- わざわざ代入するのがめんどいときは以下の様な方法も有効。
>> Cr['Koguma'].spr().dir() [ENTER]
または
>> dir(Cr['Koguma'].spr()) [ENTER]
-- 前者は使えない場合があるので注意。後者は必ず使える。
* クリーチャのグループについて [#fb50277d]
- SprBlenderでクリーチャを作るには、クリーチャ1体を構成...
-- グループパネルは、オブジェクトパネルの中にある。
-- クリーチャに対応するグループは、SprCreature にチェック...
* スクリプトを外部ファイル化する方法 [#tf09979f]
- Text Editの Textメニューから Save as を選択。
- ファイル名を付けて保存する。
-- ファイル名は blendファイル名_ルール名.py とでもするの...
- 次に、ファイルパスを相対パスにする(そのままだと絶対パ...
-- blenderのFileメニューを開き、
-- External Data -> Make All Paths Relative
-- あとは普通にSaveすればOK。
* Pythonのよく見るエラー [#i66b19f2]
- 基本的には分からないエラーメッセージはGoogle検索するこ...
- 'XXXXX' object has no attribute 'yyyy'
-- yyyyという名前のメンバ関数や変数がXXXXXオブジェクトに...
- 'yyyy()' takes N arguments (M given)
-- 引数の数が違う。yyyy()関数はN個の引数を取るのにM個与え...
ページ名:
サイト内検索
and
or
メニュー
Springhead
トップページ
スクリーンショットと紹介
ダウンロード
ドキュメント
開発者向け情報
SprBlender
SprBlender
SprBlenderの特徴
SprBlender使用例
ダウンロード
ドキュメント
Choreonoid Springhead Plugin
CnoidSprPlugin
Counter: 0, today: 0, yesterday: 0