Doc:JA/2.6/Manual/Game Engine/Camera

提供: wiki
< Doc:JA‎ | 2.6‎ | Manual‎ | Game Engine
移動先: 案内検索

BGE(Blender Game Engine)におけるカメラ

ゲームエンジンの内部で、カメラはデフォルトの特性(動き方)をさせることもできるし、オブジェクトを追跡することもできます。それにはオブジェクトまたはその頂点を親にするか、Cameraアクチュエータを使います。


Note
どのオブジェクトでもカメラにすることができます(後述)。またカメラにオブジェクトを追跡させる場合、どのオブジェクトでも使うことができます(Emptyなど)


カメラを使うには、カメラの視点(0 NumPad)でゲームエンジンをスタートさせます。またカメラがゆがむのを防ぐため、常にカメラオブジェクトがビューいっぱいに表示されるようにズームしてください。

デフォルトのカメラ

デフォルトではカメラは動きません。

オブジェクトを親にする

カメラにオブジェクトを追跡させます。まずカメラを選択し、つぎにオブジェクトを使い選択し、CtrlP → Make Parent

この場合、オブジェクトが回転するとカメラも回転します。それを避けるには、後述のように頂点を親にしてください。

頂点を親にする

最も簡単な方法として、オブジェクトを選択して⇆ TabEditモードに入り、頂点を選択してObjectモードにもどります。

次に、何もオブジェクトを選択していない状態でカメラを選択し、⇧ Shiftを押しながらオブジェクトを選択します。そして⇆ TabEditモードに入り、CtrlPを押してMake vertex parentを選びます。


これでカメラはオブジェクトを追跡するようになり、またオブジェクトが回転してもカメラは回転しません。

オブジェクトをカメラにする

どんなオブジェクトでもカメラにすることができます。またどのようなプロパティを持っていても良いです。

オブジェクトをカメラにするには、Objectモードでオブジェクトを選択し、{{Shortcut|ctrl|pad0}を押します。

元に戻すには、カメラを選択して再度{{Shortcut|ctrl|pad0}を押します。


レンズシフト

BlenderのインターフェースではカメラビューのXY平面上でビューをずらすオプションがあります。これはビデオプロジェクターのレンズシフト機能に似ています。この機能は通常、Y軸に沿って画像を動かします(それによって、たとえばテーブルにプロジェクターを置いたときに映像の下半分がテーブルにかかってしまう、ということを防ぎます)。

残念ながら、このパラメータはゲームエンジンで使えません。

投影を操作するには、Pythonでカメラの投影マトリックスを修正します。

import bge
scene = bge.logic.getCurrentScene()
cam = scene.active_camera
# get projection matrix
camatrix = cam.projection_matrix
#modifying the camera projection matrix by modifying the x and y terms of the 3rd row to obtain a shift of the rendered area 
camatrix[2][0] = 2*shiftx
camatrix[2][1] = 2*shitfy
cam.projection_matrix = camatrix

shiftxとshiftyは視野を単位とします。よってビューを半分上にずらすときは、shiftyを0.5にセットします。

カメラの投影マトリックスの属性は初期化スクリプトが実行されたあとで設定してください。ゲームが始まった瞬間に実行すると、投影マトリックスがぐちゃぐちゃになってしまいます。

関連項目