しろログ

に関する記事

タイムリープに見るADV系映像表現の理想

2007/10/14

アニメ的表現目指してたエロゲとかADV(アドベンチャー)系ゲームの理想が
達成されつつあるんだと思った、という話。


これはタイムリープというゲームのベンチマーク用ソフトの映像。
3Dのモデルを使って、トゥーンレンダリングという平面的に表示させる技術で作られている。

利点は、もちろん動画を描く必要が無いこと。
一度モデルを作ってしまえば、後は自在に動かせる。
これでゲーム制作の自由度は格段に上がる。

思いつきでワンシーン挿入したくなっても、
新たに動画を描き起こす必要が無い。
カメラワークも自由自在。

従来のアニメより、簡単にアニメ的な映像が作れるということだ。
(簡単、というのは技術的にではなく、人・時間的に、という意味で。
技術は時間と共に向上するが、人と時間は放っておいても増えない。)

ちなみに下の動画はキャラを入れ替えたもの。


これを普通のアニメ方式でやろうとすると、
そのキャラの動きを一から描くはめになる。
人も時間も必要だ。

しかし、プログラムで動いている場合には、
文字通り、キャラデータを入れ替えるだけで済む。

ドラクエ8とかトラスティベル、アイドルマスターも同様の技術を使っている。

それがやっぱり、ADV系ゲームに採用されたわけで。
映像表現でアニメを追っかけてたADV系ゲームが、
ここらで枝分かれして独自の発展を遂げる予感がする。

2001年の時点でときメモ3とかはもう既に取り入れてるけど、あれはPS2向けだったし、
この処理ができるPCがそこそこの値段で手に入るようになったこれからが面白くなりそう。

純粋な2Dが駆逐されることは無いと思うけど、
より技術が進んで、ユーザー環境も整ってくれば、
トゥーンレンダリングがいずれ主流になるんじゃなかろうか。

この方面では、ほとんどエロゲーなのが泣けるのだが、
普通にエンターテインメントに応用できるものだと思うので、
アニメ+ゲームな分野に期待したい。

ゲームに限らずアニメ自体も、従来のアニメではないアニメというか、
日本版Pixarみたいな感じのスタジオなんかもできたら面白いと思う。

関連記事:
Trusty Bell トラスティベル ~ショパンの夢~

関連リンク:
タイムリープ(18禁)
THE IDOL M@ASTER
Pixar

ご意見・感想・ご質問 (0)

トラックバック URI :

カテゴリ:ゲーム

タグ:, , , , ,

ロストプラネットに見る影

2007/07/25

今更だけど、カプコン熱いなー。
3Dゲームファンのための「ロスト プラネット」グラフィックス講座

なんつーか、ゲーム業界って、誤解が多いな。には概ね同意なんだけど、
こういうの見ると、次世代機や、コアユーザーを擁護したい気もする。

ともかく、増大する開発費を抑えつつ
クオリティを高めようとしているカプコンの努力は賞賛したい。

ちょうどロスプラやってて、感動したのは影。

影って不思議なもので、
無いと変だと言われ、あっても変だと言われる。
(と誰か言ってた)

そしてあるとやっぱり注目される。
古いところでは、ドラクエの気球の影が、
下の地形によって大きくなったり小さくなったりすることが話題を呼んだ。
(自分の周りでは)

最近だと、FFXでもキャラの下に楕円があるだけだったと思う。
それがFFX2で戦闘時はキャラに合わせて影ができてて、へーっと思った記憶がある。
ちょっとギサギサしてたけど、進歩したと思った。

それから考えれば、ロスプラの影はとんでもなく凄い。
なにしろ、影だけで、PS2の3倍のビデオメモリを消費して生成しているという。

影の生成方法にもいくつかあるようだが、
ロスプラは基本的に動的生成しているようだ。
輪郭部分もソフトになっていて違和感が無い。
(詳細は上記講座記事の後半部参照)

白い雪にフェンスの格子が鮮やかに映し出されている様や、
遠い夕日に伸びるVS(メカ)機体の影は感動モノ。
もちろんハイデフで見るべし。

・・・。

やっぱり擁護できないか。


↑PC版もある

ご意見・感想・ご質問 (2)

トラックバック URI :

カテゴリ:ゲーム

タグ:, , , , ,

そろそろ3Dでもやるか

2007/05/25

使ったのはPapervision3D

以前、DirectXで少しやったけど、やめてた。
でもFlashで飾り程度に使えるとまあ、いいかもってことで、少しやってみた。
基本的にサンプルのHelloWorldをいじってみる。

ちなみにfcwrapとかでやってる人は、
srcの中のcomとorgフォルダをflex_sdk_2のframeworks/source
の中に置けばOK。

とりあえず、どべっとソース。
[Embed]してるのはテクスチャ。

package
{
    import flash.display.*;
    import flash.events.*;

    import org.papervision3d.scenes.*;
    import org.papervision3d.cameras.*;
    import org.papervision3d.objects.*;
    import org.papervision3d.materials.*;

    public class main extends Sprite
    {
        private var container :Sprite;
        private var scene     :Scene3D;
        private var camera    :Camera3D;
        private var sphere    :Sphere;
        private var cylinder  :Cylinder;
        private var plane     :DisplayObject3D;

        [Embed(source='wood.jpg')] private var TexWood:Class;

        public function main()
        {
            init3D();
            addEventListener( Event.ENTER_FRAME, loop3D );
        }

        private function init3D():void
        {
            container = new Sprite();
            addChild( container );
            container.x = 200;
            container.y = 200;

            scene = new Scene3D( container );

            camera = new Camera3D();
            camera.sort = false;

            addSphere();
            addCylinder();
            addPlane();
        }

        private function addSphere():void
        {
            var tx:BitmapMaterial =
            new BitmapMaterial((new TexWood).bitmapData);

            sphere = new Sphere(null, 400);
            sphere.z = 0;
            sphere.rotationX = 30;
            scene.addChild( sphere );
        }

        private function addCylinder():void
        {
            var tx:BitmapMaterial =
            new BitmapMaterial((new TexWood).bitmapData);

            cylinder = new Cylinder(tx, 800);
            cylinder.z = 0;
            scene.addChild( cylinder );
        }

        private function addPlane():void
        {
            plane = new Plane(null, 3200, 2400);
            plane.z = 0;
            scene.addChild( plane );
        }

        private var i:uint = 0;
        private function loop3D(event:Event):void
        {
            camera.hover(0, Math.cos(i * Math.PI/180),
                            Math.sin(i * Math.PI/180));
            sphere.yaw( 10* Math.sin(i * Math.PI/180) );
            i+=4;
            scene.renderCamera( camera );
        }
    }
}

その結果がこれ。


ソース追ってけば、大体分かってしまうほど、お手軽。
3Dシーンと、カメラを用意して、3Dシーンにプリミティブ作ってaddChildし、
ENTER_FRAMEごとにloopでrenderさせるだけ。

でも、オブジェクトが同じ位置にある時の描画が変・・
camera.sort = false
にしておくと、置いた順でZ位置を決定するっぽいので、
チラついたりしないようだけど。

うーん、3Dやるには、
三次元脳にしないといけないから疲れるな~。

ご意見・感想・ご質問 (1)

トラックバック URI :

カテゴリ:コンピューター

タグ:, ,