見出し画像

趣味のプログラミング(8)

 次の「趣味のプログラミング(7)」ののち、2024年8月から5ヶ月間、休眠していた「趣味のプログラミング」の続きです。


2025年1月5日

 あっという間に休眠状態が5ヶ月も経過していましたが、正月明けに新たな気持ちを込め、今年の最初の「趣味のプログラミング」のテーマを掲げたいと思います。

 今年の最初のテーマは、休眠中にもあれこれイメージを巡らせていたましたが、ざっくりと、次のスケッチのような3DCG動画にしたいと思います。

2025年最初のテーマとなる3DCG動画のイメージ

2025年1月6日

 昨日、今年の最初のテーマとして、ざっくりとしたスケッチを掲げました。
 このざっくりとした下手くそなイメージは、正方形の台座から生えた毛のように見えますが、実は細い紐状のヘビ型ロボットをイメージしたものです。

 昨年、今年の干支と関連してか、ネット上でヘビ型ロボットの実験に関する記事を目にしました。昨年はロボットアーム、二足歩行ロボット、ロボットハンドの3DCG動画試作に挑戦していましたので、その延長でヘビ型ロボットの3DCG動画にも挑戦したいと考えています。

 どのようなヘビ型ロボットを作るか考える中で、太さや長さをどうするかが課題となりました。動画を描画することを前提に、シンプルな紐状のデザインにすることで省スペース化を図れるのではないかと考えています。

 まずは細長い紐状の形状で基本的な描画を行えるようにし、その後、太さを付けてイメージの変化を確認してみたいと思います。


2025年1月7日

 久しぶりのSwift アプリケーション・プロジェクトの構築。過去のプロジェクトのフォルダーをコピーし、プロジェクト名を書き換えています。

 数ヶ月触らないと、感が戻るのに時間がかかります。😅

Swift アプリケーション・プロジェクトの構築

2025年1月11日

 ヘビ型ロボットの一番最初の段階の試作を行いました。
 関節数200個で、頭となる先端に直方体を付けていますが、ボディ部分は線描画の状態です。1月5日に掲げたイメージは、この段階のイメージです。

ヘビ型ロボットの一番最初の段階の試作(関節数200個の線描画)

2025年1月12日その1

 ボティ部分に8角柱状のモデルを貼付けてみました。

 描画数が増えて描画が緩慢になってきたので、関節数を200個から54個へ減らしています。そのため、カーブ部分の滑らかさは無くなりました。

ヘビ型ロボットの試作(関節数54個で8角柱状のモデルを貼付)

 最初のモデルの構成としては、こんな感じで進めようと思います。

 次の段階としては、動きの描画を付けていく想定です。

 最初の動きの描画としては、「ヘビ型ロボットが伸びていく様子」を想定しています。

 「ヘビ型ロボットが伸びていく様子」と言っても、同じサイズのモデル要素を付け足すのか、短いサイズのモデル要素を付け足しモデル要素のサイズを伸ばしていくのか、根本と先端のどちらにモデル要素を付け足していくのか、いくつかのバリエーションが考えられます。

 次の段階では、幾つかのバリエーションで、「台座からヘビ型ロボットが伸びていく様子」の描画を試してみたいと思います。


2025年1月12日その2

 次の段階では、幾つかのバリエーションで、「台座からヘビ型ロボットが伸びていく様子」の描画を試してみたいと考えていました。

 しかし、その実装を検討していく過程で、気が変わりました。

 「構築したモデルの構成要素を変更しないこと」を前提にし、「根本からモデル要素が伸びる」のではなく、「根本からモデル要素が押し出されていく」様子の描画を試みてみたいと思います。


2025年1月18日その1

 一旦、関節数を118個に増やし、「根本からモデル要素が押し出されていく様子」の描画を試してみました。

 モデル要素が押し出されている様子が分かりやすいように配色を変更しました。

 この動画では、モデル要素単位で押し出される様子を描画しています。

 もし、モデル要素の長さより短い長さで押し出される様子を描画しようとすると、描画処理に若干の調整を行う処理を追加する必要があります。


2025年1月18日その2

 関節数118個で「根本からモデル要素が押し出されていく様子」の描画を、モデル要素の長さより短い(1/4の)長さで押し出される様子の描画を実装してみました。

 このモデル要素の長さより短い長さでの押し出される様子の描画の実装には、もっと手間取ると思っていましたが、最初の調整でスムーズな描画を実現できてしまい驚いています。

 次の段階では、台座から伸びたヘビ型ロボットが、「床に上で這うように伸びていく様子」の描画を試してみたいと思います。


2025年1月21日

 「2025年1月18日その2」に確認した描画内容については、モデル要素の長さより短い(1/4の)長さで押し出される様子をスムーズに描画できていました。

 しかし、たまたま、コイル状の形状についてスムーズな描画が行えただけで、次のような曲線に対してスムーズな描画が行うことは簡単ではないようです。😞

試行中の曲線描画のサンプル

2025年1月22日

 ヘビ型ロボットの3次元上の複数のプロットを通過する移動軌跡を求める汎用式をChatGPTに訊いてみました。

 この資料の中で、「スプライン補完」についてはイメージできますが、その他の「サーペンタイン運動モデル」、「最適化アルゴリズムによる軌跡生成」、「多関節ロボットの逆運動学アプローチ」については深堀して理解する必要がありそうです。😔

 この資料を眺めていると、再び、次の記事の投稿が思い起こされます。😆


2025年1月25日

 次の段階として、台座から伸びたヘビ型ロボットが「床に上で這うように伸びていく様子」の描画を目指しているところですが、最初の段階のコイル状の描画を水平にして描画してみました。


2025年1月26日

 台座から出現したヘビ型ロボットが「床に上で這うように伸びていく様子」の描画を試作しました。試行しているうちにモデル要素の長さより短い(1/2の)長さで押し出される様子も、まるで生き物のような動きに見えてきたため、ブレの補正は行いませんでした。

 なお、ここまでの「ヘビ型ロボットが台座から伸びていく様子」は、あらかじめモデル全体を台座の下部に隠し、台座より上の部分へ押し上げ、台座から出現しかかのように描画していました。次の動画は、その様子が分かるように4分の1に縮尺して録画したものです。


2025年1月27日

 動きのあるヘビ型ロボットの描画の次の段階へ進むために、現時点での課題に対応しなければならないと考えています。

 これまでに試作した描画のヘビ型ロボットは、最末尾の方から(後ろ向きに)進行して伸びている構造になっています。

 今後、ヘビ型ロボットを台座から分離、独立して、三次元的な動きを描画していく際には、胴体から進行方向へ進み、胴体の先に頭があり、胴体の後方に尾がある構造にしていきたいと思います。

 ちなみに、胴体はどこからどこまでかというと、頭の付け根から人間でいう「お尻の穴」みたいな器官があるところまでが胴体で、そのうしろが「尻尾(しっぽ)」となっているようです。


2025年1月29日

 動きのあるヘビ型ロボットの描画の次の段階としては、昨日書いたモデルの構造に合わせて、sinカーブ状に進む描画にトライしたいと思います。

 次の画像は、描画方法をイメージするために描いたスケッチです。

sinカーブ状に進む描画イメージのスケッチ

2025年2月1日

 あっという間に2月です。

 等間隔の線分で繋がれた線をsinカーブ状にトレースさせるためにN番目の線分の折れる角度を求める式をChat GPTに確認してみました。参考資料として、Note記事にしましたが、数式をKatexで書き直す作業が地味で大変です。(が、式の内容を確認しながらの楽しい単純作業です)😅


2025年2月16日

 ようやく落ち着いて、ヘビ型ロボットのsinカーブ描画コード実装に着手しています。もしかしたら重たい難しい数式を羅列しなくても、ダメ元で、簡単なコードでsinカーブもどきができないか試しています。

 まずは、100個の要素からなるヘビ型ロボットのモデルを直立した状態の描画からスタートします。

100個の要素からなるヘビ型ロボットのモデル

 無茶苦茶なカーブ描画を脱し、微妙なカーブ描画が行えるようになりました。
 道のりは、相当長そうです。😅

微妙なカーブ描画

いいなと思ったら応援しよう!