Ja/Physics and Ragdolls: Difference between revisions

From Valve Developer Community
< Ja
Jump to navigation Jump to search
mNo edit summary
m (fix)
Line 3: Line 3:
original English version: [[Physics and Ragdolls]]
original English version: [[Physics and Ragdolls]]


=physboxes(物�?�モデル)�?�作�?=
=physboxes(物理モデル)の作成=
==衝突モデル(collision model)の作成==
分離しているオブジェクトはそれぞれ凸包(Convex hull)に変換されます。1つのオブジェクトに属する面全ては単一のスムージンググループとテクスチャを持つようにする必要があります。またオブジェクトの範囲を決めるのに単純な頂点接続を見るので、単独の凸包に変換したくないものは接続しないでください。Studiomdlはメッシュの最適化を行わずにただ凸包を作り出します。


==�?�?モデル(collision model)�?�作�?==
また経験則として、1インチ立方より小さい詳細をモデリングしてはいけません。この面においては荒くあるべきで、ボルトやボタンといった詳細部分を分離した凸包部品にすべきではありません。
一般的に凸包部品が重なるのには問題がありません。モデルを少ない(そのかわり大きい)凸包部品で作れるのなら、パフォーマンスが向上します。できるだけ凸包部品の数を少なくしたいとおもうでしょう。頂点数はそれほど重要ではありませんが、レンダリングされるモデルのLODより低いものであるべきです。1インチの不正確さに気がつくことはないでしょう - プレイヤーが先に気がつく他の要素は多くあります。


分離�?��?��?�るオブジェクト�?��??れ�?�れ凸包(Convex hull)�?�変�?��?�れ�?��?�。1�?��?�オブジェクト�?�属�?�る�?�全�?��?��?�一�?�スムージンググループ�?�テクス�?ャを�?�?�よ�?��?��?�る必�?�?��?�り�?��?�。�?��?�オブジェクト�?�範囲を決�?る�?��?��?�純�?�頂点接続を見る�?��?��?�?�独�?�凸包�?�変�?��?��?��??�?��?�も�?��?�接続�?��?��?��?��??�?��?��?�。Studiomdl�?�メッシュ�?�最�?�化を行�?�?��?��?��?�凸包を作り出�?��?��?�。
==$autocenterの使用==
<code >$autocenter</code >はモデルの原点(origin)がバウンディングボックスの中央になるように移動します。


�?��?�経験則�?��?��?��?1イン�?立方より�?�?��?�詳細をモデリング�?��?��?��?��?��?��?�ん。�?��?��?��?��?��?��?��?��?��??�?�る�?��??�?��?ボルトやボタン�?��?��?��?�詳細部分を分離�?��?�凸包部�?�?��?��?��??�?��?��?�り�?��?�ん。
これはまた元々の原点からのオフセットした"placementOrigin"attachmentポイントを追加します。
これはgib(破片、肉片)を作るのに役立ちます。XSIで配置したい場所に集合として複数のgibのモデリングを行います。それぞれのgibを別に出力し、.qcに<code >$autocenter</code >を加えます。これでライティングやバインディングボックスなどに適切な原点設定がされ、親となるモデルが破壊されてgibを出すときに正しい場所に発生させることができます。


一般的�?�凸包部�?�?��?�?�る�?��?��?��?題�?��?�り�?��?�ん。モデルを少�?��?�(�??�?��?��?り大�??�?�)凸包部�?�?�作れる�?��?�ら�?パフォーマンス�?��?�上�?��?��?�。�?��??る�?��?�凸包部�?�?�数を少�?��??�?��?��?��?��?�も�?��?��?�ょ�?�。頂点数�?��??れ�?��?��?�?�?��?��?�り�?��?�ん�?��?レンダリング�?�れるモデル�?�LODより低�?�も�?��?��?�る�?��??�?��?�。1イン�?�?��?正確�?��?�気�?��?��??�?��?��?��?��?��?��?�ょ�?� - プレイヤー�?�先�?�気�?��?��??他�?��?素�?�多�??�?�り�?��?�。
==役立つコマンド==
 
'''$mass'''
==$autocenter�?�使用==
 
<code>$autocenter</code>�?�モデル�?�原点(origin)�?��?ウンディングボックス�?�中央�?��?�るよ�?��?�移動�?��?��?�。
 
�?�れ�?��?��?�元々�?�原点�?�ら�?�オフセット�?��?�"placementOrigin"attachment�?イントを追加�?��?��?�。
 
�?�れ�?�gib(破片�?肉片)を作る�?��?�役立�?��?��?�。XSI�?��?置�?��?��?�場所�?�集�?��?��?��?�複数�?�gib�?�モデリングを行�?��?��?�。�??れ�?�れ�?�gibを別�?�出力�?��?.qc�?�<code>$autocenter</code>を加�?��?��?�。�?�れ�?�ライティングや�?インディングボックス�?��?��?��?�切�?�原点設定�?��?�れ�?親�?��?�るモデル�?�破壊�?�れ�?�gibを出�?��?��??�?�正�?��?�場所�?�発生�?��?�る�?��?��?��?��??�?��?�。


==役立�?�コマンド==
* オブジェクトの重さをキログラムで設定します


'''$mass'''
* オブジェクト???をキログラム?設定???
<pre>
<pre>
       // set the mass to 100 kg
       // set the mass to 100 kg
Line 30: Line 26:
</pre>
</pre>
'''$automass'''
'''$automass'''
* �?�?モデル(collisionmodel)�?��?�用�?�れ�?�マテリアル�?�密度・厚�?�を使�?��?�自動的�?��?�?�を計算�?��?��?�。
 
* 衝突モデル(collisionmodel)に適用されたマテリアルの密度・厚さを使って自動的に重さを計算します。
 
<pre>
<pre>
       // automatically compute mass
       // automatically compute mass
Line 36: Line 34:
</pre>
</pre>
'''$concave'''
'''$concave'''
* �?�れ�?�studiomdl�?��?�?モデル�?�凹部を�?�?�(�?��?�り凸部分�?�組�?��?��?�?�)�?��?�る�?��?�を�?�?��?��?�。 通常studiomdl�?�モデル�?��?�独�?�凸包�?��?�る�?�推定�?��?��?�。
 
* これはstudiomdlに衝突モデルが凹部を持つ(つまり凸部分の組み合わせ)であることを伝えます。 通常studiomdlはモデルが単独の凸包であると推定します。
 
<pre>
<pre>
       // collision model is not a single convex piece
       // collision model is not a single convex piece
       $concave
       $concave
</pre>
</pre>
=ラグドールの作成=
==衝突モデルの作成==
既存のキャラクタをガイドとして使い、それぞれのボーンに1つずつオブジェクトを作ります。これらのオブジェクトはできるだけ簡単にしますが、あまりキャラクタの形からはなれすぎることがないようにしてください。物理システムはそれぞれのボーンを凸包にすることに気をつけてください。今のところ複数ボーンの使用なしでは凹オブジェクトを作ることはできません。これらのモデルは基本的に非常にローポリゴンで、頂点は1つのボーンだけに割り当てるようにする必要があります。表面にカバーできてない場所があってもかまいません(コンバイン兵士やゾンビのモデルを参照してください)。


=ラグドール�?�作�?=
モデルの一部のボーンだけに衝突オブジェクトを追加するべきです。数が多すぎると、後で誰かの作業を増やすことになります。パフォーマンス制限では処理量を考えるとそれぞれのキャラクタで大体15-20のボーンしかシミュレーションできません。2足モデルでは、すでにあるモデルをテンプレートにしてください。HL2ではシミュレーションでの2足モデルを以下のように削減しています:
 
==�?�?モデル�?�作�?==
 
既存�?�キャラクタをガイド�?��?��?�使�?��?�??れ�?�れ�?�ボーン�?�1�?��?��?�オブジェクトを作り�?��?�。�?�れら�?�オブジェクト�?��?��??る�?��?�簡�?��?��?��?��?��?��?�?��?�りキャラクタ�?�形�?�ら�?��?�れ�?��?�る�?��?��?��?��?�よ�?��?��?��?��??�?��?��?�。物�?�システム�?��??れ�?�れ�?�ボーンを凸包�?��?�る�?��?��?�気を�?��?��?��??�?��?��?�。今�?��?��?��?複数ボーン�?�使用�?��?��?��?�凹オブジェクトを作る�?��?��?��?��??�?��?�ん。�?�れら�?�モデル�?�基本的�?��?�常�?�ロー�?リゴン�?��?頂点�?�1�?��?�ボーン�?��?��?�割り当�?�るよ�?��?��?�る必�?�?��?�り�?��?�。表�?��?�カ�?ー�?��??�?��?��?�場所�?��?��?��?�も�?��?��?��?��?�ん(コン�?イン兵士やゾンビ�?�モデルを�?�照�?��?��??�?��?��?�)。
 
モデル�?�一部�?�ボーン�?��?��?��?�?オブジェクトを追加�?�る�?��??�?��?�。数�?�多�?��?�る�?��?後�?�誰�?��?�作業を増や�?��?��?��?��?�り�?��?�。パフォーマンス制�?�?��?�処�?��?を考�?�る�?��??れ�?�れ�?�キャラクタ�?�大体15-20�?�ボーン�?��?�シミュレーション�?��??�?��?�ん。2足モデル�?��?��?�?��?��?��?�るモデルをテンプレート�?��?��?��??�?��?��?�。HL2�?��?�シミュレーション�?��?�2足モデルを以下�?�よ�?��?�削減�?��?��?��?��?�:
 
* サ�?ート�?�る背骨区間�?�2�?��?��?�
* 指�?��?��?�先�?�全�?�スキップ
* 大抵�?�場�?�追加装備�?�別�?�ボーン�?�マージ(コン�?イン兵士�?��?ックパック�?��?�)
 
�??�?��?果人間キャラクタ�?�大部分�?�大体15�?�ボーン�?��?�り�?��?�。
 
�?��?�モデルをSMDファイル�?��?��?�出力�?��?ragdoll.smd�?��??�?を�?��?��?��?�。モデル�?�他�?�アニメーション�?��?�るディレクトリ�?��?存�?��?��?�。SMDをリファレンス�?��?��?�出力�?�る必�?�?��?�り�?��?�。
 
==Build the Ragdoll Pose==
 
モデルを一番リラックス�?��?�状態�?��?ーズ�?��?��?��?�。�?��?��?ーズ�?�シミュレーション�?�れ�?��?��?��?�ボーン�?��?生�?�れるアニメーション�?��?�り�?��?�。人間モデル�?��?��?指を削減�?��?��?�る�?��?��?�?��?�アニメーション�?�指を�?ーズ�?��?�る�?��?�必須�?��?�。�?��?��?�る�?��?��?��?キャラクタ�?�銃をも�?��?��?�る時�?�死ん�?�も�?引�??金�?�指を開�?��?�倒れる�?��?��?��?�り�?��?�ん。
 
�?��?��?ーズをSMDファイル�?��?��?�ragdoll_pose.smd�?��?��?��??�?�?�出力�?��?��?�。


==ragdoll.qcファイル�?�追加==
* サポートする背骨区間は2つだけ
* 指とつま先は全てスキップ
* 大抵の場合追加装備は別のボーンにマージ(コンバイン兵士のバックパックなど)


�?��?��?も�?��??�?��?�常�?�近�?�スケルトンを�?�?�キャラクタ�?��?�る�?�ら�?�??�?�モデル�?�ragdoll.qcをコピー�?�る�?��?��?��?�。�??�?��?��?��?��?�ら�?<code>$hl2/models/ragdoll.qc</code>を自分�?�モデル�?�ディレクトリ�?�コピー�?��?��??�?��?��?�。モデル本体�?�qcファイル�?�最後�?�<code>"$include “ragdoll.qc�?</code>"�?��?��?�行を追加�?��?��?�。
その結果人間キャラクタの大部分は大体15のボーンになります。
このモデルをSMDファイルとして出力し、ragdoll.smdと名前をつけます。モデルの他のアニメーションがあるディレクトリに保存します。SMDをリファレンスとして出力する必要があります。


==モデル�?�コンパイル==
==ラグドールポーズの作成==
モデルを一番リラックスした状態のポーズにします。このポーズがシミュレーションされていないボーンで再生されるアニメーションになります。人間モデルでは、指を削減しているので、このアニメーションで指をポーズさせるのが必須です。こうすることで、キャラクタが銃をもっている時に死んでも、引き金の指を開いて倒れることはありません。


モデル�?�studiomdlを実行�?��?��?�。ジョイント�?�?モデルを作�?�?��?��?�る(building a jointed collision model)�?��?��?�表示�?��?�る�?��?��?��?�。
このポーズをSMDファイルとしてragdoll_pose.smdという名前で出力します。


==HLMVを実行�?��?ジョイントを編集==
==ragdoll.qcファイルの追加==
同じ、もしくは非常に近いスケルトンを持つキャラクタがいるなら、そのモデルのragdoll.qcをコピーするだけです。そうでないなら、<code >$hl2/models/ragdoll.qc</code >を自分のモデルのディレクトリにコピーしてください。モデル本体のqcファイルの最後に<code >"$include “ragdoll.qc”</code >"という行を追加します。


�?��?�HLMVを実行�?��?��?�。�?��?��?"Physics Model"�?ェックボックスを�?ェック�?��?��?�。ワイヤフレーム�?�物�?�モデル�?�正�?��??コンパイル�?�れ�?頂点�?�割り当�?�も�?��?��?��?��?��?�を確�?��?�?��?�。physicsタブをクリック�?��?��?�。�?��?��?��??れ�?�れ�?�ジョイント�?��?�軸�?�対�?��?�角度�?�制�?を行�?��?��?�。qc�?�他�?�キャラクター�?�も�?�をコピー�?��?��?�れ�?��?�??�?�ジョイント制�?�?�ら編集を行�?��?��?�。mass�?�正�?��?��?�?を設定�?�る(キログラム)�?��?�を忘れ�?��?��?��??�?��?��?�。1キログラム�?�2.2�?ンド�?��?�。
==モデルのコンパイル==
モデルにstudiomdlを実行します。ジョイント衝突モデルを作成している(building a jointed collision model)という表示がでるはずです。


制�?�?�調整�?�終�?�?��?�ら�?"Generate QC"ボタンをクリック�?��?��?�。新�?��?�QCファイル�?�クリップボード�?��?存�?�れ�?��?��?�。ragdoll.qc�?��??�?�内容をコピー�?��?�モデルを�?コンパイル�?��?��?�。
==HLMVを実行し、ジョイントを編集==
ではHLMVを実行します。まず、"Physics Model"チェックボックスをチェックします。ワイヤフレームの物理モデルが正しくコンパイルされ、頂点の割り当てもただしいことを確かめます。physicsタブをクリックします。ここでそれぞれのジョイントの各軸に対して角度の制限を行います。qcに他のキャラクターのものをコピーしていれば、そのジョイント制限から編集を行えます。massに正しい重量を設定する(キログラム)ことを忘れないでください。1キログラムは2.2ポンドです。
制限の調整が終わったら、"Generate QC"ボタンをクリックします。新しいQCファイルがクリップボードに保存されました。ragdoll.qcにその内容をコピーしてモデルを再コンパイルします。

Revision as of 04:21, 29 November 2005

originally translated by RumikoHoshino, 2005/8/25
original English version: Physics and Ragdolls

physboxes(物理モデル)の作成

衝突モデル(collision model)の作成

分離しているオブジェクトはそれぞれ凸包(Convex hull)に変換されます。1つのオブジェクトに属する面全ては単一のスムージンググループとテクスチャを持つようにする必要があります。またオブジェクトの範囲を決めるのに単純な頂点接続を見るので、単独の凸包に変換したくないものは接続しないでください。Studiomdlはメッシュの最適化を行わずにただ凸包を作り出します。

また経験則として、1インチ立方より小さい詳細をモデリングしてはいけません。この面においては荒くあるべきで、ボルトやボタンといった詳細部分を分離した凸包部品にすべきではありません。 一般的に凸包部品が重なるのには問題がありません。モデルを少ない(そのかわり大きい)凸包部品で作れるのなら、パフォーマンスが向上します。できるだけ凸包部品の数を少なくしたいとおもうでしょう。頂点数はそれほど重要ではありませんが、レンダリングされるモデルのLODより低いものであるべきです。1インチの不正確さに気がつくことはないでしょう - プレイヤーが先に気がつく他の要素は多くあります。

$autocenterの使用

$autocenterはモデルの原点(origin)がバウンディングボックスの中央になるように移動します。

これはまた元々の原点からのオフセットした"placementOrigin"attachmentポイントを追加します。 これはgib(破片、肉片)を作るのに役立ちます。XSIで配置したい場所に集合として複数のgibのモデリングを行います。それぞれのgibを別に出力し、.qcに$autocenterを加えます。これでライティングやバインディングボックスなどに適切な原点設定がされ、親となるモデルが破壊されてgibを出すときに正しい場所に発生させることができます。

役立つコマンド

$mass

  • オブジェクトの重さをキログラムで設定します
      // set the mass to 100 kg
      $mass 100

$automass

  • 衝突モデル(collisionmodel)に適用されたマテリアルの密度・厚さを使って自動的に重さを計算します。
      // automatically compute mass
      $automass

$concave

  • これはstudiomdlに衝突モデルが凹部を持つ(つまり凸部分の組み合わせ)であることを伝えます。 通常studiomdlはモデルが単独の凸包であると推定します。
      // collision model is not a single convex piece
      $concave

ラグドールの作成

衝突モデルの作成

既存のキャラクタをガイドとして使い、それぞれのボーンに1つずつオブジェクトを作ります。これらのオブジェクトはできるだけ簡単にしますが、あまりキャラクタの形からはなれすぎることがないようにしてください。物理システムはそれぞれのボーンを凸包にすることに気をつけてください。今のところ複数ボーンの使用なしでは凹オブジェクトを作ることはできません。これらのモデルは基本的に非常にローポリゴンで、頂点は1つのボーンだけに割り当てるようにする必要があります。表面にカバーできてない場所があってもかまいません(コンバイン兵士やゾンビのモデルを参照してください)。

モデルの一部のボーンだけに衝突オブジェクトを追加するべきです。数が多すぎると、後で誰かの作業を増やすことになります。パフォーマンス制限では処理量を考えるとそれぞれのキャラクタで大体15-20のボーンしかシミュレーションできません。2足モデルでは、すでにあるモデルをテンプレートにしてください。HL2ではシミュレーションでの2足モデルを以下のように削減しています:

  • サポートする背骨区間は2つだけ
  • 指とつま先は全てスキップ
  • 大抵の場合追加装備は別のボーンにマージ(コンバイン兵士のバックパックなど)

その結果人間キャラクタの大部分は大体15のボーンになります。 このモデルをSMDファイルとして出力し、ragdoll.smdと名前をつけます。モデルの他のアニメーションがあるディレクトリに保存します。SMDをリファレンスとして出力する必要があります。

ラグドールポーズの作成

モデルを一番リラックスした状態のポーズにします。このポーズがシミュレーションされていないボーンで再生されるアニメーションになります。人間モデルでは、指を削減しているので、このアニメーションで指をポーズさせるのが必須です。こうすることで、キャラクタが銃をもっている時に死んでも、引き金の指を開いて倒れることはありません。

このポーズをSMDファイルとしてragdoll_pose.smdという名前で出力します。

ragdoll.qcファイルの追加

同じ、もしくは非常に近いスケルトンを持つキャラクタがいるなら、そのモデルのragdoll.qcをコピーするだけです。そうでないなら、$hl2/models/ragdoll.qcを自分のモデルのディレクトリにコピーしてください。モデル本体のqcファイルの最後に"$include “ragdoll.qc”"という行を追加します。

モデルのコンパイル

モデルにstudiomdlを実行します。ジョイント衝突モデルを作成している(building a jointed collision model)という表示がでるはずです。

HLMVを実行し、ジョイントを編集

ではHLMVを実行します。まず、"Physics Model"チェックボックスをチェックします。ワイヤフレームの物理モデルが正しくコンパイルされ、頂点の割り当てもただしいことを確かめます。physicsタブをクリックします。ここでそれぞれのジョイントの各軸に対して角度の制限を行います。qcに他のキャラクターのものをコピーしていれば、そのジョイント制限から編集を行えます。massに正しい重量を設定する(キログラム)ことを忘れないでください。1キログラムは2.2ポンドです。 制限の調整が終わったら、"Generate QC"ボタンをクリックします。新しいQCファイルがクリップボードに保存されました。ragdoll.qcにその内容をコピーしてモデルを再コンパイルします。