歯車・減速機・ギヤードモータCG動画 制作秘話
こんにちは。今月から何回かブログを担当しますYMTechです。歯車技術が専門ですがパソコン関連も特技で、歯車設計のプログラム作成やゲーム関連の趣味から高じて独学でCG動画制作をやっています。
先月公開した同心軸・遊星ギヤードIPMモータ(IPP-112シリーズ)紹介動画は、遊星減速機開発を進める中で、当初減速機部分の技術紹介や社内教育用に制作を開始しましたが、製品プロモーションYouTube動画をUPしてはと提案しました。まあ、自らの首を絞めたようなものです(笑)
今回動画制作手法についてブログでの紹介を依頼されましたので、できるだけわかりやすくご説明できればと思います。
まずは全体の概要を図式で紹介すると次のようになります。

今回は製品特徴と「3D Model Mover」を中心に解説します。
———————————————————————————————————
1.同軸遊星ギヤードモータ特長
2.「3D Model Mover」(製作した3Dモデルを動かすアプリ)
2-1 開発に使用したツール
2-2 「3D Model Mover」特長
2-3 シーケンスファイルでできること
2-4 シェーディング(Sphere Mapを使った金属表現)
2-5 表面粗さを考慮したシェーディング
3.まとめと予告
———————————————————————————————————
1.今回紹介の製品特長
遊星減速機部分の設計はExcel VBAで製作した歯車設計ツール「YMT歯車計算アプリ」を使っていますが、その内容についてはまた次回ご紹介できればと思います。
基本コンセプトは
「商用からDC電源までをカバーし機械に収まるコンパクト・ギヤードモータ」
特 長
・弊社は減速機からモータまで一貫生産。その強みを活かしたギヤードモータ(コンパクト)
・IPMモータは高効率であり冷却ファンがなく、騒音だけでなくコンパクト化に寄与
・遊星および太陽歯車は焼き入れ後歯切り加工を実現。焼き入れ歪のない高精度歯車なので低騒音
・遊星減速機キャリアは弊社複合旋盤による一体加工により、高剛性・高精度を確保
・キャリアは両端軸受支持構造により高剛性を確保(図1. 参照)

2.「3D Model Mover」
プロモーション動画、組立手順説明、動作説明などに使用できるアプリケーションです。
「3D Model Mover」は開発中の減速機の動作を説明するために製作。2Dのアニメーションも作りましたが理解してもらえず3D化をトライ。Trial & Errorをどれだけやったかわかりませんが久しぶりに4時間睡眠(65オーバーでは疲れます)。。。しかし気になると寝られない性格。3D画像データは「Blender4.2」で製作しました。
2-1 開発に使用したツール
ほとんどFree 有難うございます<(_ _)>
・Visual Studio 2022:「3D Model Mover」アプリ開発
・DxLib :DirectXを使う2D,3Dライブラリです(Free)
言語はC++ シェーディングは個別対応
2-2 「3D Model Mover」特長
・3Dモデルを自由に動かすことができます(キー操作、特にシーケンスファイルでほとんどのことができます。シーケンスファイルにて組立手順も動画で表現できます)
・拡大・縮小ができます
・スピードのUP/Downができます
・視点移動ができます
・部品ごとに表示ON/OFFができます
・部品ごとに透明処理ができます
・金属表現ができます(なるべく実物に近づけるように)
・表面粗さによる光の乱反射を考慮できます シェーディングについては後述
・テロップを流すことができます
・音楽、ナレーションを流すことができます
2-3 シーケンスファイルでできること
シーケンスファイル(*.seq) にtextコマンド列を書くことで、以下のことができます
①部品毎もしくは全部品の指定位置に移動(徐々に移動も可能)
②指定された割合で全部品の展開・縮小(徐々に展開・縮小も可能)
③部品毎もしくは全部品の透明度設定(徐々に設定透明度に持っていくことも可能)
④部品毎もしくは全部品の表示ON/OFF
⑤視点変更(徐々に視点変更も可能)
⑥運転スピード設定(徐々に指定スピードにすることも可能)
⑦拡大・縮小(徐々に指定値に持っていくことも可能)
⑧次のシーケンスコマンドに移行するまでのタイマー設定
⑨最初からシーケンスコマンドを繰り返すループ設定
⑩バックミュージックを流しながらナレーションを流せます
ループ再生ON/OFF、音レベル設定可
⑪部品ごとにメタリック用Sphere Map指定と強度指定できます(後述)
⑫部品ごとに表面粗さ(後述)を指定できます
⑬部品ごとに環境光強度設定できます(default0)
⑭ステージのバックカラーをRGB設定できます
⑮シーケンスファイルから別のシーケンスファイルを読み込み実行できます
⑯リアルタイムに拡大率、展開率、視点位置などの状況表示ができます
見ながらシーケンスファイル編集すると速く製作できます
⑰テロップを流せます(色、サイズ(24, 48, 72,96,108 Pixel選択)、位置設定、\nで改行できます)
⑱必要に応じて追加あり(使いだすと色々アイデアが)
*今回のYouTube動画ではシーケンスにて全て動作設定しています。
その録画を「AviUtl」にて音楽・テロップ含め編集しました。
2-4 シェーディング(Sphere Mapを使った金属表現)
「3D Model Mover」の大きな特徴として、金属表現・表面粗さを考慮したシェーディングを行っていることがあります。DxLibに独自のシェーディングモジュールを読み込む機能があったことは救いです。シェーディングはHLSL(Microsoft DirectX 用言語)での記述です。
金属表現の有無の比較を図2、図3に示します。

「Blender」と同様と思いますがSphere Map手法を使います。
金属は自身の色だけでなく金属が反射してきた光(物)が目に入ります(図4. 参照)。その周囲の物の代替として半球体(Sphere Map)を用います。視点と表面の角度から目に入るSphere Mapの色を持ってきます。

取ってきたSphere Mapの色と自身の色(ディフーズカラー)と合わせて表現します(当然、Phongシェーディングを考慮し、それぞれの色強度を計算します)。GPUを使ってpixel毎に計算描画します。
GPUパワーすごいですね! 今回、使用したSphere Map(Free)を図5.に示します。
図5.のSphere Mapだけでは表現できないものもあります。ウォーム歯車のホイールは銅合金が主流ですが、図6. (a) 従来のPhongシェーディング、(b) 図5. Sphere Map(Free)を使用した場合、(c) ホイールのみ図7.のSphere Mapを使用した例です。
明らかに、材料に合ったSphere Mapが必要です。開発した「3D Model Mover」は部品ごとにSphere Mapを割り当てることができます。

2-4 表面粗さを考慮したシェーディング
ここでの表面粗さとは光の乱反射率を言います。粗いと乱反射率が高くなります。
Wikipedia を参考にしますが、図8.に実写真とランバートシェーディング(フラットシェーディング)での比較を示します。表面が粗くなってくると外側が乱反射により白く見えます。
これを補完するためOren–Nayar反射があります。同じようにDesney物理ベースシェーディングがあります。当方製作は物理ベースではないですが反射の考え方のみ考慮しました。
Oren–Nayar、Desneyの考えをシェーディングに取り入れてそれぞれ製作。
参考までに、Oren–Nayarを取り入れたシェーディング例を図9.に示しますが、金属表面(粗さがない)においても粗さ強度0.5 程度は必要な気がします。 取り入れない場合は端面が黒すぎるような。 (Oren-NayarとDesney方式の差はほとんどありませんでした、評価結果では)
*図9.ではSphere Mapも同時に取り入れて球らしく。

3.まとめと予告
できるだけわかりやすくと思いましたが、かなりオタク気味になってしまったかも知れません。。(汗)
「3D Model Mover」はシェーディング含めさらに改良中です。
この辺りにご興味ご質問、また同様のCG動画を制作したい等ご要望ありましたら「お問い合わせ窓口」よりご連絡下さい。
次回は歯車設計ツール「YMT歯車計算アプリ」と「Blender」による3D化などをご紹介したいと思います。