映画「2001年宇宙の旅」のシーンを模したCG動画を ■2001年宇宙の旅;ステーション5のCG動画に載せてありましたが、 今回これをハイビジョン(1980×1080)で作り 直しました。
YouTubeに1280×720のハイビジョンで上げました。
http://www.youtube.com/watch?v=AEo9ZzT5Hos&feature=channel_page
残念ながらハイビジョンのままこのブログに載せることはできません ので、480×270に縮小して載せます。
参考までに旧版も載せます。
モデル、動きなどに若干の修正が入っています。
- 各シーンでのカメラの動きを映画に近い形に変更
- オリオン号を新たなモデルに置き換えた/li>
- シーン3ではステーションの回転速度を上げた
- 照明を単純化した
- シーン4ではオリオンのサイズを1.2倍にし、シーン5では0.9倍 にした
じゃまな陰を嫌い、旧版では沢山のライトを並べていましたが、 今回は陰を作らない設定のライト1個にするなどして照明を 単純化したのですが、旧版の方が照明に関してはできがよい ですね。
技術メモ
次のツールによって作成しました。
- CG: Shade10.5
- 合成: AfterEfects6
- 編集: PremierProCS3
- マルチプレクス/色調調整/画像サイズ変更: TMPGEnc4.0
- flv化 FlashCS3VideoEncoder
補足:
- Shade9からShade10にした時、なぜかサイズが10倍になってしまった
ので、モデルおよび各シーンのサイズを1/10にした。
サイズを1/10にしたシーンにモデルを読み込むとモデルのサイズが1/10に されてしまったので、シーン上では10倍にした。 - 編集はEdiusで試したが、連番付き静止画を複数セット読み込ませると 残念ながら、次回プロジェクトが立ち上がらなくなるので、不採用とした
- Premierではハイビジョンで音声をマルチプレクスすることは事実上 不可能なので、画像(m2v)と音声(wav)出力とし、TMPEGencでマルチ プレクスするようにした
- YouTubeに1920×1080のビデオを上げると画質が著しく悪くなるので TMPGencで1280×720のmpeg2ビデオを作製しupした
- FlashVideoEncoderは720×480の入力しか受け付けない。 PremiereでSD画質のmpg出力を行ったが、なぜか音が消えて しまったので、TMPGEncでwavをマルチプレクスしました
- FlashVideoEncoderは画像が暗くなるので、TMPEncで ガンマ補正を行った(未採用:調整中)
- FlashVideoEncoderはmpgの変換で落ちることが あるので、TEMPencでWMPにした。
PhotoShopでの画像修正
Shade10.5にしたところ、リング部に黒い線ノイズが出る
ようになってしまいました。
余りに目立つ部分に関してはPhotoShopで修正を施しました。
Shadeの出力画像と、修正後の画像を載せます。
Shade10.5の問題点(形状参照):
Shade10では外部に置いたモデルを形状参照可能となりましたが 問題点を沢山持ったままとなっています。
- モデル上の色合いなど位置に無関係なパラメタを変更しても 参照シーン上の位置がずれる。0
- Shade10では形状参照のマスターとそのリンクが置かれる が本来表示されるべきでないマスターが表示されることが ある。表示されない場合でもマスターが持つライトが もれ出てくる。
Shade10.5の問題点(レンダリング):
Shade10.5はレンダリングに問題があり、リング部に黒い筋が
入ってしまうようになりました。
その部分に光をあてても、真っ黒なままとなります。
レイトレーシングでもパストレーシングでも同じ症状が
でます。
当初バンプマップとの関連かと思われましたが、バンプマップ
の凸凹とは無関係のようです。
Shadeでの作業は無数のバグの中を通り抜ける障害物レースの
ようなものです。
Shade10.5の問題点(資源管理):
Shade10にはレンダリング時に問題がありました。
- メモリリーク
- CPUアイドリング時間が徐々に増え、最終的には殆ど動かなくなる
Shade10.5ではメモリリークはなくなりました。
しかしながら、アイドリング時間の増加は相変わらず残っています。
このため、Shadeプログラムを起動しなおす必要はなくなったものの やはり100コマ程度ずつ出力しないと現実的時間内に処理は完了しません。
そこで、アニメーションレンダリングをあきらめ、スクリプトにより 一こまずつ出力させるようににしました。
スクリプトは次のものです。
import time # 時間文字列を返す def hms_str(start,end): sec=int(end-start) h= sec/3600 m= (sec%3600)/60 s= (sec%60) return '%(h)02d:%(m)02d:%(s)02d'%{"h":h,"m":m,"s":s} # scene= xshade.scene() scene_name= scene.file_path start= time.time() prev = start for frame in range(0,900): scene.sequence_value= frame scene.rendering.render() file='tiffs/st5s1_%(f)03d.tif'%{"f":frame} cur = time.time() print file+' '+hms_str(prev,cur)+' '+hms_str(start,cur)+\ ' '+str(xshade.shade().used_memory) prev= cur; # scene.rendering.image.save(file) scene.save_image(file) # print file del file # del scene.rendering.image print 'done '+hms_str(start,time.time())
出力に要する時間:
アニメーション出力に要する時間は
- シーン1:一こま17秒〜150秒、900コマで16:49:22
- シーン3:
- シーン4:600コマで7時間くらい
- シーン5:600コマで8時間くらい