このチュートリアルでは、BlenderでMovie Textureを使用する方法を見ていきます。特に、ムービーの各フレームを3D Viewportで直接プレビューする方法や、Timeline内で再生を開始するフレームを設定する方法などを紹介します。
このチュートリアルの動画版は現在この言語では利用できません。以下で字幕付きの英語版をご覧いただけます。動画の下には日本語に翻訳された文字起こしがあります。
動画の書き起こし
皆さん、こんにちは!このチュートリアルでは、BlenderでMovie Textureを使用する方法を見ていきます。特に、ムービーの各フレームを3D Viewportで直接プレビューする方法や、Timeline内で再生を開始するフレームを設定する方法などを紹介します。
始める前に、他の動画と同様に、このチュートリアルのテキスト版やその他のリソースが、説明欄のリンクから私のウェブサイトで利用でき、他の言語でも閲覧できることをお知らせしておきます。
このチュートリアルで使用しているプロジェクトでは、左側に3D ViewportとTimelineを配置し、中央にはTextureマッピング用のUV EditorとMaterial editorを配置しています。最後に、右側には通常のOutlinerとProperties Editorがあります。コンピューター画面の3Dモデルには専用のMaterialが設定されており、Textureに適したUV mappingもすでに用意されています。

具体的には、このMaterialは、表示したい画像またはムービーに、色付きの円を表すマスクを乗算することで作成されています。この乗算によって、古いCRTモニターのような見た目を再現できます。このテクニックについては、以前チャンネルとウェブサイトで公開したチュートリアルで解説しています。
ムービーは、通常のImage Texture nodeを使って読み込むことも、ファイルをMaterial editorに直接ドラッグして読み込むこともできます。後者の場合、Movie modeに設定されたImage Texture nodeが自動的に作成されます。

Textureの設定で主に使用するのは、Extensionメニュー、3つの数値パラメーターであるFrames、Start Frame、Offset、そしてAuto Refreshオプションです。
Auto Refreshオプションは、Timeline上でフレームを移動したときに、3D ViewportのRendered previewでムービーの再生状態を直接確認したい場合に便利です。ただし、たとえばTimelineのフレーム200に移動しても、Auto Refreshを有効にしただけでは、3D ViewportのRendered previewに表示されているTextureは変化しません。

これは、Auto Refreshに加えて、Texture nodeのFramesフィールドにも正しい値を設定する必要があるためです。このフィールドでは、ムービーの何フレーム分を再生できるようにするかを指定します。クリップに含まれているフレーム数を確認するには、UV Editorでクリップを開き、Nキーを押してSidebarを開きます。Imageタブに必要な値が表示されます。私の場合は2843です。このパラメーターも設定すると、3D Viewportで正しいプレビューを確認できるようになります。

3D Viewportのプレビューは正しく更新されるようになりましたが、UV Editorのプレビューは更新されていないことに注目してください。これは、UV Editorでも、そのSidebarのImageタブにあるFramesフィールドで、表示するムービーのフレーム数を設定する必要があるためです。幸い、ImageタブにはFramesフィールドの横にMatch Movie Lengthボタンがあり、この値をすばやく設定できます。

3D ViewportとUV Editorの両方で現在のフレームを確認できるようにすると、通常の画像Textureと同じように、UV mappingを正しく設定する際にも役立ちます。ここで特に重要になるのがExtensionメニューです。デフォルトではRepeatに設定されています。このモードでは、UV islandがフレームより大きい場合、フレームの画像がジオメトリ上で複数回繰り返されます。

私の場合、UV islandは実際にはフレームより小さくなるため、デフォルト設定のままで問題ありません。ただし、必要であればExtension modeをClipに変更できます。これにより、他の領域でTextureが繰り返されるのを防ぐことができます。この後のムービーにより適した状態になるよう、数フレーム先に進めてUV islandを調整します。

それでは、Start FrameとOffsetのパラメーターを見ていきましょう。まずはOffsetです。ご覧のとおり、私の場合、Lucasfilm GamesのロゴはTimelineのフレーム77で表示されます。これをTimelineの最初のフレームですぐに表示するには、Offsetフィールドに76と入力する必要があります。これにより、ムービーを含むTexture nodeに、ムービーのフレーム77まで直接スキップするよう指示できます。
ただし、この場合もRendered previewとUV Editorでは値が別々に設定されることに注意してください。そのため、UV Editorでも同じ結果を得るには、そちらのOffsetの値も76に変更する必要があります。

Image Texture nodeとUV Editorの両方でOffsetを0に戻し、今度はデフォルト値が1のStart Frameパラメーターについて見ていきましょう。
このパラメーターでは、Blender全体のアニメーションのTimeline上で、どのフレームからムービーの再生を開始するかを指定します。デフォルト値が1なのは、通常、Movie TextureがBlenderのアニメーションの最初のフレームから再生を開始するためです。たとえば、Timelineのフレーム100からムービーを再生したいとします。最初の100フレームではカメラを画面に近づけ、その後でムービーを再生したい場合などです。先ほど、Lucasfilm GamesのロゴはTextureのフレーム77で表示されると説明しました。それでは、nodeのStart Frameフィールドに100と入力すると、再生開始が100フレーム遅れるため、ロゴはTimelineのフレーム176で表示されるようになります。この場合も、UV Editorで同じ結果を得るには、ImageタブのStart Frameの値も変更する必要があります。このタブでは、Timeline上ではフレーム176にいるにもかかわらず、100フレーム分のずれが考慮されるため、Blenderによってムービーのフレーム77にいることが表示されます。

つまり、Start FrameとOffsetの違いは次のとおりです。Start Frameでは、Image Texture node内のムービーが、BlenderのTimelineの最初のフレームに対して異なるタイミングから再生を開始するように設定できます。また、負の値を使用することもできます。一方、Offsetでは、Image Texture node内のムービーの一部のフレームをスキップし、ムービー内の別の位置から再生を開始できます。
最後に、実践的な例をもう1つ紹介します。まず、nodeのStart FrameとOffsetの値を、それぞれ1と0に戻します。わかりやすくするため、ここではRendered previewに注目しますが、UV Editorでも同じ結果を確認するには、そちらの値も変更する必要があることを覚えておいてください。

LucasfilmのロゴがTextureのフレーム77で表示され、実際のThe Secret of Monkey Islandのイントロの最初の画面がフレーム281で表示されることがわかっています。ここでは、最初の100フレームでカメラが画面に近づくアニメーションを作成します。この間、部屋のライトの強度を0まで下げ、画面は黒いままにします。その後、Lucasfilm Gamesのロゴ部分をスキップして、イントロ画面がすぐに表示されるようにします。必要なKeyframesを挿入して、カメラの移動と照明の変化を作成します。
ムービーをフレーム280から再生したいので、Offsetフィールドに280と入力する必要があります。また、BlenderのTimelineのフレーム100から再生を開始する必要があるため、Start Frameフィールドには100と入力します。

しかし、アニメーションをプレビューすると、フレーム100より前でもムービーのフレームが表示されていることがわかります。この時点では画面を黒くしたいので、この問題を解決する必要があります。そのためには、Mix nodeを使用してムービーの出力と黒をミックスし、このMix nodeのFactorをアニメーションさせます。具体的には、フレーム99まではFactorを0に設定し、フレーム99でkeyframeを挿入します。次に、フレーム100でFactorを1に設定し、もう1つkeyframeを挿入します。これにより、2つのフレームの間で瞬時に切り替わります。黒がMix nodeの最初の入力になっている場合、Factorは最初に0に設定し、その後1に設定します。これは、Factorが0の場合は最初の入力だけが使用され、Factorが1の場合は2番目の入力だけが使用されるためです。



今回のチュートリアルは以上です!役に立ったと思ったら、Likeを付けてチャンネル登録をして応援していただけると嬉しいです!それでは、またお会いしましょう!