スケッチや漫画のように、線で3Dの世界を描く方法


9

陰影を付けず、すべての線の太さが等しいインク描画を作成することを検討してください。たとえば、ディルバートのようなストリップコミックに見られます。これはアクティブな3次元の世界を表していますが、オブジェクトにはテクスチャがありませんが、テッセレーションされた三角形も表示されません。

例として、月面を描くことを検討してください。あなたが描くかもしれない線は、丘の上端に沿って、それらが表面の一般的なレベルに会うところまでです。それらの後ろでは、より大きな丘で、遠くまで、そして地平線の見えるものの後ろで、同じことをします。クレーターの場合は、外縁に近い円を描き、下縁に部分的にマスクした円を描くことができます。ボルダーは、エッジの周りに、目に見える主要なエッジに沿って線を引きます。宇宙飛行士は外縁に沿って、そして宇宙服の主要な特徴に沿って線を引くでしょう。

私は経験豊富なプログラマーですが、3Dプログラミングは初めてです。私はこのようなゲームをすぐに考えることはできません-それは行われましたか?そして、どのようにそれを行うのでしょうか?2つの問題が頭に浮かびます。重要なエッジを見つけ、それを描くことです。通常の3Dエンジンではなく、行列に基づいてコード化された「エンジン」が必要ですか?


人間は2D画面で3Dをそのまま認識するのが得意ではないため、シーンの奥行きを理解するために非常に重要な部分であるシェーディングを削除すると、3Dに依存するゲームではうまく機能しない可能性があることを警告しますゲームプレイ
Jeff

あなたが説明しているスタイルに合ったゲームが1つあります-数年前にPS2向けにリリースされたOkami、en.wikipedia.org
wiki /%C5%

1
いいですね、私はこれを自分でやろうと考えていました。ただし、線だけでなく、ある種のセルシェーディングを使用する必要があると思います。
mpnk121 2011

回答:


11

基本的に、あなたが話しているのはエッジ検出であり、さまざまな方法でそれを実行するゲームがいくつかあります。

おそらく最初のものは Jet Set Radio(西部で "Jet Grind Radio"としてリリースされた)でした。ほんの1、2か月後にリリースされたのは、私が同様のレンダリング手法を開発したゲームでした 。LooneyTunes:Space Raceです。(スペースレースでは、均一な線の太さを維持するために最善を尽くしましたが、ジェットセットラジオは不均一な線幅をその視覚スタイルの大きな部分にしています)。

これらのゲームはどちらも同じように機能しました。輪郭を描かれるオブジェクトごとに、オブジェクトを2回描画します。まず、頂点プッシュを適用して(つまり、各頂点を法線ベクトルに沿って少しだけ移動して)裏返しを逆にしてレンダリングし、「線」をどのような色にしたいかを指定します。次に、頂点をプッシュせず、通常の背面を使用して再度描画します。この2つの操作により、オブジェクトの周囲を縁取る色付きのシルエットが得られます。最初の2つのゲームで使用したのはそれだけです。スペースレースでは、オブジェクトがカメラからどれだけ離れているかに基づいて、頂点をさまざまな距離で押すことにより、一定の線幅の錯覚を維持しました。ジェットセットラジオではそうではありませんでした(オブジェクトがカメラに近づいたり遠ざかったりすると、ラインが大きくなったり小さくなったりしました)

NVidiaとATIには、この効果を実現する他の方法のデモがいくつかあります。主に、各ピクセルのカメラからピクセルへのベクトルに垂直な法線を探すピクセルシェーダーを中心に展開しますが、これらはすべて非常に高解像度のメッシュを必要とし、一貫性がありません実際の線幅。実際にこの種のアプローチを使用しているゲームがあるかどうかはわかりません。これらの企業のサンプルのようなものは見たことがないと思います。

また、Dragon's Lair 3D紹介します。Dragon's Lair 3Dは、私が知っている唯一のゲームで、実際にこれを適切に実行しているようです。カメラからポリゴンへのドット積とモデル内の各ポリゴンのポリゴンの法線を取り、各ポリゴンがカメラに向いているか、カメラから離れているかを確認し、接続されたポリゴンのすべてのペアをチェックします。ポリゴンのペアがエッジを共有し、1つのポリゴンがカメラに面し、1つのポリゴンが面していない場合、スクリーンスペースのそのエッジに沿って細い一定の幅の線を描画します。(Dreamcast for Space Raceでこれを十分に速く実行できなかったか、使用していました。今日、現代のコンピューターでは、これは私がこの効果を実行しようとしている方法ですが、

Dragon's Lair 3Dは、私が知っている唯一のゲームでもあります。実際には、そこにシルエットエッジがない場合でも、異なる色の領域間または頂点法線の不連続点に線を描画します。アーティストがポリゴンのエッジを指定して常に線を受け取ることができるカスタムツールがあったのではないかと思います。

大神いくつかの他の人々によって言及された、ジェットセットラジオや宇宙競争に似た二重レンダリング頂点プッシュアプローチを、使用しているように見えるが、また、つや消しアートスタイルを使用して構築されているテクスチャを使用しています。(たとえば、遠くの丘は、標準の四角形として描画されるテクスチャにブラシストロークとして描画されます)。岡見さんは素敵ですが、あなたが求めているテクノロジーに本当に触れているとは思いません。確かに、それはその効果のために古いアプローチを使用しています。

さて、あなたのケースでは、塗りつぶしなしでこれを行うことを求めています。線だけで世界を描くだけです。それは簡単です。照明なしですべてのポリゴンを描画し、背景色と一致する単一の一定の色で描画します。これらのアプローチはどれも、ゲームエンジンをまったく変更せずに、そのアプローチを使用して機能するはずです。これらの「背景と同じ色」のポリゴンを実際に描画することは重要です。これにより、背景のエッジが前景オブジェクトを通して見えなくなり、非常に混乱しやすくなります。


理論と興味深い例の両方を含む+1の素晴らしい答え
Maik Semder

すばらしい回答です。時間を割いていただき、ありがとうございます。
陽気な沼地2011

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.