プチコン3号&BIGまとめWiki

Mame/3D の変更点

パンくずリスト


#title(3D表現の注意事項)

プチコン3号で、ついにBASICは立体視の時代へ。注意事項を意識して疲れにくい3Dプログラムを。

#contents

** マニュアル31: 立体視 [#o1fdc9b5]

公式マニュアルの注意事項も参照してください。

- [[31.立体視 – SmileBasic:http://smilebasic.com/e-manual/manual31]]

** 3D映像の仕組み [#n74a112f]

一般に、3D映像は、"右目と左目に別々の映像を見せる"ことで実現されています。

- http://www.sharp.co.jp/products/device/about/lcd/3d/

左右の目に別々の映像を見せるために、3DSは視差バリア方式の液晶を採用しています。

3Dをサポートした画面モードを使用している間は、プチコンは右目用と左目用の両方のグラフィックを生成します。右目用/左目用のグラフィックでは、Z座標と3Dボリュームの値に応じて、オブジェクトX座標が"ズレ"て描画されることになります。

- 3Dボリュームがゼロ(OFF)となっている間は、"ズレ"の量もゼロになり、右目/左目のグラフィックは一致することになります。
- Z座標がゼロの場合は"ズレ"の量もゼロになります。
- "ズレ"の量は整数に丸められます(→ 3D位置は"なめらか"には変化しない)
- "ズレ"によって、右目または左目のどちらかにしか表示されないオブジェクトが出ることが有ります(→ "飛び出す"オブジェクトのウインドウ違反に注意する)

** "保護者による使用制限機能"による制限 [#v073ee33]

- http://www.nintendo.co.jp/support/parental_control/3ds/index.html

3DSの立体視機能は、"保護者による使用制限機能"(いわゆるペアレンタルコントロール機能)によりOFFにされている可能性が有ります。

** 3D位置は"なめらか"には変化しない [#z6a01002]

#tweet(https://twitter.com/shisyamo_wizwiz/status/540146109838917632)

また、3Dボリュームの位置によって表現できる段階がより少なくなっている可能性が有るので、この段階が存在することを前提としたプログラムを書くのは望ましくありません。

逆に、3D表示と同時に表示優先度を制御する目的でZ座標を使用している場合は、3Dボリュームを全開にして意図しない視差が発生していないかチェックする方が良いでしょう。

(2D表現しか必要としない場合は2D表示の画面モードをXSCREENで選択します。2D表示は視差バリアを生成しないため光量の面で有利です。)

** "飛び出す"オブジェクトのウインドウ違反に注意する [#s60b5255]

- http://digrajapan.org/?wpdmact=process&did=MTcuaG90bGluaw

ウインドウ違反とは、画面から飛び出す(プチコンのZ座標でマイナス値)オブジェクトが右目または左目のどちらかにしか表れない状況を指します。これは自然界では絶対に発生しない現象であるため、それなりに不快な見えかたになってしまいます。マイナスのZ座標を持つオブジェクトを画面端に配置することは避けてください。

以下のようなコードでウインドウ違反を起こした状況を体験できます。

#basic{{
CLS
LOCATE 0,0,-256
PRINT "HOGE"
LOCATE 25,10,-256
PRINT "HOGE"
LOCATE 0,11,0
}}

プログラムは左上端と中央に"HOGE"を表示します。3Dボリュームを全開にすると、左上のHOGEは中央のHOGEよりも格段にみづらくなることが判ると思います。また、3Dボリュームをゼロ(OFF)にすることで、左上のHOGEが中央のHOGEと同様に見えることが観察できます。

プレイヤーキャラクタを飛び出す方向に配置する場合は特に注意が必要です。そのような物体は注視されている可能性が高いためです。逆に、エフェクトやパーティクル等短時間しか発生しないものや背景はそれほど違和感が無いかもしれません。

画面よりも奥側にある(プチコンのZ座標についてプラス方向)のオブジェクトが右目または左目のどちらかにしか見えない状況は自然界でも発生します(窓を通して外の景色を見ている状況を考えます)。このため、奥側のオブジェクトの配置については特に注意する必要は有りません。

** クロストークが目立つ表現を避ける [#b2c7d968]

3DSのディスプレイはHMDやバーチャルボーイのような独立した画面を持つデバイスと異なり、クロストークが発生することに注意が必要です。3D映像におけるクロストークとは、右目用の映像が左目に見えたり、または、その逆を指します。

例えば、黒背景より手前に白いオブジェクトを置く等するとクロストークが目立つ結果になります。

特に、スコア表示等を画面奥や手前に配置する際には注意が必要です。Zがゼロの場所に配置することで、クロストークを防ぐことができます。Zがゼロの場合は視差が発生しないので、右目と左目で表示内容が一致するためです。

** 最小限の3D [#cab082c6]

EDIT画面でのカーソルなど、よく見ると1ドットだけ視差がついて飛び出しているものがあります。これはZ座標で言えばテキストがZ=0、カーソルがZ=-2になっています。Z=+2にすると逆に引っ込む方向に1ドットの視差を得ることができます。

なお、Z=-2と+2を比較すると-2のほうがクロストークが目立ちません。

- 当初-2と+2としましたが、3Dボリュームを最小(ゼロではない)にしても画面全体で破綻がないようにするには-36以下と+42以上が必要のようでした。(旧3DS+Ver3.0.2+LOCATEで確認)

表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.006 秒 | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30