このチュートリアルでは、Blenderの剛体シミュレーションを使用して、コンテナにオブジェクトを詰める方法を見ていきます。



動画の書き起こし

皆さんこんにちは!

このチュートリアルでは、Blenderの剛体シミュレーションを使用して、コンテナにオブジェクトを詰める方法を見ていきます。

私はこのチュートリアルをBlenderのバージョン3.3で録画しており、実践的な例を示すために、私のアセットのうち「Pharma capsule pills and bottle」というものを使用します。

この動画の説明欄にはアセットへのリンクがありますが、それを持っている必要はありません。

その特定のオブジェクトがなくても、チュートリアルを見て学ぶことができます。

重要なのは、テクニックを理解することで、これはコンテナの中だけでなく、表面にも多くのオブジェクトをランダムだけど信じられるような方法で配置するのに役立ちます。

原則は同じで、錠剤やキャンディ、金貨など、何にでも適用できます!

私が使用している3Dモデルは、実際には互いに関連する複数のオブジェクトで構成されています。

フタは必要ありませんので、私がやっているように、それを非表示にしたり削除したりできます。

私たちには3つのオブジェクトがあります:コンテナ、ラベル、そしてすべての錠剤を表すオブジェクトです。これらの錠剤は1つのオブジェクトに融合されています。

コンテナとラベルを一時的に非表示にすることで、それらをより詳しく調べることができます。

シミュレーションを作成するためには、まず錠剤を1つ分離し、それに剛体の物理コンポーネントを与え、次に錠剤のプロトタイプを複製して落下のシミュレーションを開始する必要があります。

錠剤オブジェクトを選択した状態で、編集モードに切り替えます。次に、マウスカーソルを錠剤の頂点の上に置き、Lキー(つまり、「リンク」)を押して、マウスカーソルの近くにあるものに接続されているすべての要素を選択します。

次に、CTRL+Iを使って選択を反転し、Xキーと頂点を使って他のすべての錠剤を削除します。

オブジェクトモードに戻ると、「Pills」オブジェクトの原点が、唯一残っている錠剤の中心に位置していないことに気付きます。

すぐに修正するために、右クリックして「Set Origin-Origin to Geometry」を選択します。

また、スケール変換が適用されていることも確認します。変換パネルのオブジェクトのScale XYZ値がすべて1に設定されているので、簡単に確認できます。

もし適用されていなければ、CTRL+Aを押して「Apply Scale」を選択して適用する必要があります。

今度は、錠剤がコンテナの開口部を通過できるように配置されているか確認したいので、コンテナを再度表示させます。

上から錠剤を中に落としてみようと思います。

実際には、この位置では錠剤がコンテナの中に落ちないので、トップビューで開口部の内側になるように、手動で移動させます。

錠剤とコンテナをつなぐ点線は、錠剤がコンテナの子オブジェクトであることを示しています。

これは、錠剤のコピーと物理シミュレーションに問題を引き起こす可能性があるため、錠剤の位置やその他の特性を維持したまま、2つのオブジェクトのリンクを解除します。

これを行うために、錠剤を選択し、ALT+Pを押して、「Clear Parent」メニューから「Clear and keep transform」を選択します。

これで、錠剤は別のオブジェクトになりました。

コピーを作成する前に、錠剤に剛体シミュレーションコンポーネントを与えて、後で作成するコピーにもすでに対応しているようにする必要があります。

剛体を追加するには、Physics Propertiesパネルの「Rigid Body」をクリックするだけです。今示したようにです。

新しく作成された剛体は、デフォルトでアクティブタイプになりますが、これはオブジェクトが重力に反応する必要があるため問題ありません。

この段階で物理シミュレーションを観察するために、タイムラインでアニメーションフレームを1に設定し、再生を押します。

錠剤が落下し、コンテナを通過します。これは、まだシーンの物理シミュレーションの一部になっていないためです。

コンテナが錠剤をキャッチするようにするには、錠剤のようにRigid Bodyコンポーネントを追加する必要がありますが、今回はすぐにタイプをPassiveに変更する必要があります。これは、コンテナが空中に落ちるのではなく、他のオブジェクトとのみ相互作用するためです。

先ほど行った変更を含めて物理シミュレーションを開始するには、タイムラインでアニメーションの最初のフレームに戻り、再び再生ボタンをクリックする必要があります。

すぐに、錠剤が落下し、ある意味でコンテナと相互作用することに気付きますが、予期しない方法で行われます:錠剤が開口部に引っかかり、空中に浮かんでいるかのように、開口部が閉じられているかのようになります。

これは、BlenderRigid Bodyパネルでコンテナの衝突を計算するために使用する形状がデフォルトのものであり、「Convex Hull」と呼ばれる閉じたボックスが使用され、物理シミュレーションエンジンの計算を簡略化するためです。

この問題を解決するために、Shapeパラメータの値を「Convex Hull」から「Mesh」に変更します。

これで、Blenderは衝突の形状をコンテナの形状に近似します。

想像できるように、このモードはかなりリソースを消費するため、節約して使用する必要があります。

この場合、シーンは非常に複雑ではないので問題ありませんが、他の状況では、Rigid BodyShapeメニューで利用可能な他のオプションを使用するかどうかを評価する必要があります。

錠剤に関しては、たとえばカプセル形状を選択できます。これは錠剤の形状を非常によく近似しますが…いずれにせよ、ここではデフォルトオプションであるConvex Hullを選択したままにしています。

タイムラインの最初のフレームに戻り、再生をクリックし、結果を見てみましょう:今回は錠剤がコンテナの中に落ち、底に数回バウンドしてから止まります。

錠剤がコンテナの底に触れると、シミュレーションが遅くなり始めることに注意してください。これは、Blenderが衝突を計算しているためです。

他の錠剤を追加すると、シミュレーションはもっと遅く進むでしょう。なぜなら、明らかにもっと多くの計算を行う必要があるからです。 シミュレーションの最初のフレームに戻りましょう。

コンテナの中に落とすために、上に積み重なった錠剤のシリーズを得たいと考えています。Blenderにコンテナの壁と錠剤間の衝突を計算した後、すべての錠剤を最終的な位置に配置するタスクを処理させます。

錠剤のさまざまなコピーを取得するのは実際にはかなり簡単です:錠剤にArray修飾子を追加し、相対オフセットをXおよびY軸の場合は0に設定し、相対Z軸では2に設定するだけです。

コンテナに何個の錠剤が入るかはわかりません(ビデオの冒頭で数えていません)。ですので、40個の錠剤を試してみます。Array修飾子のCountパラメータにこの数字を入力します。

修飾子がまだ適用されていないため、すべての錠剤はまだインスタンスであり、別々のオブジェクトではありませんので、今シミュレーションを適用することはできません。

そのため、修飾子のパネルでApplyをクリックして修飾子を適用します。

ただし、錠剤はまだ1つのオブジェクトの一部です。これらは、独立したジオメトリにする必要があります。

これを行うには、Edit Modeに移動し、すべてのジオメトリを選択し、Pを押し、画面に表示されるSeparateメニューの「By loose parts」を選択するだけです。

この方法では、ツールチップが示すように、各「島」、つまり各別々のジオメトリごとに1つのオブジェクトが得られます。

Objectモードに戻り、新しい錠剤が実際に別々のオブジェクトであることに注意しましょう。これは、Outlinerでも確認できます。

これらのオブジェクトはすべて、最初の錠剤(すべての他のものの「プロトタイプ」として機能した)に対して行ったように、Rigid Bodyコンポーネントが設定されています...

...ただし、各コピーの原点がまだ最初の錠剤の原点にあることもわかります!

ただし、この問題は簡単に解決できます。コピーの1つを選択して(アクティブなオブジェクトにする)、他のすべてのコピーを選択し(Bキーとマウスを使って行っています)、選択した部分を右クリックし、画面に表示される「オブジェクトコンテキスト」メニューから「Set Origin - Origin to Geometry」を選択します。

すべての錠剤が別々のオブジェクトになり、原点が正しく設定され、すべての錠剤にRigid Bodyコンポーネントが正しく設定されています。

タイムラインの最初のフレームに移動し、再生ボタンをクリックしてシミュレーションを開始できます。

この場合、シミュレーションには数分かかりますので、すぐに結果をお見せします。

実際には、この容器には40錠の薬が少なすぎるかもしれません!

とにかく、アニメーションの再生をいくつかのポイントで中断して、錠剤の配置を見てみることができます。

アニメーションの最後のフレームに移動し、一時的に容器とラベルを非表示にします。錠剤が空間や交差がない現実的な休止位置にありますので、アニメーションのフレームは良い結果を得るのに十分です。

アニメーションは面白いですが、チュートリアルはまだ完了していません。この物理シミュレーションの結果を、アニメーションの最後のフレームで容器の中に配置されている錠剤と共にエクスポートしたい場合、物理シミュレーションを何らかの方法で永続化する必要があります。

ピルのPhysicsタブからRigid Bodyコンポーネントを削除する操作は行わず、ピルを容器と一緒に融合させたりしてはいけません。これらの操作は、物理シミュレーションを失い、最初からやり直さなければならなくなります!

代わりに、最終的にしたいフレームに自分自身を配置し(例えば、最後のフレーム)、1つの錠剤を選択し(少なくとも1つのアクティブオブジェクトが選択されている状態にします)、すべての錠剤を選択します。この選択には、Bキーとマウスを使用できます。

すべての錠剤が選択された状態で(うち1つがアクティブ)、Blenderの検索ボックスで "Apply Transformation" を検索し(私の場合はスペースバーで呼び出せます)、Rigid Bodyの変換を適用したいので、Rigid Bodyセクションのオプションを選択します。

まだ終わりではありません。再び検索ボックスを開いて「Remove Rigid Body」と入力し始め、選択したすべての錠剤からRigid Bodyコンポーネントを削除したいと考えています。オブジェクト - リジッドボディ - 削除操作を選択しましょう。

これでシミュレーションが永続化されました。タイムラインのさまざまなフレーム間を移動しても、錠剤はもう動かず、Rigid Body物理コンポーネントも持っていません。

この時点で、このオブジェクトは他のシナリオで使用するためにエクスポートできます。

錠剤は個々のメッシュであり、それぞれのジオメトリの中心に原点があります。そのため、錠剤をそのままにしておくか、グループ化したり、親子関係を持たせたり、あるいは結合させるかは、あなたのニーズに応じて選択してください。

このチュートリアルは以上です!またお会いしましょう!

🇺🇸 Sitemap - 🇮🇹 Sitemap - 🇪🇸 Mapa del sitio - 🇧🇷 Mapa do site - 🇫🇷 Plan du site - 🇩🇪 Sitemap - 🇷🇺 Карта сайта - 🇨🇳 网站地图 - 🇯🇵 サイトマップ - 🇰🇷 사이트맵


このサイトは、私の制作物の一部を紹介することのみを目的としており、宣伝目的ではありません。現在、カスタム制作、コンサルティング、その他いかなる業務上の協力に関するご依頼も受け付けておらず、対応いたしませんので、あらかじめご了承ください。


プライバシー及びクッキーの使用に関する拡張情報の通知