/// <summary> /// This function returns OpenGL style projection matrix. /// </summary> /// <returns> /// output parametor. /// </returns> public Matrix4x4 getUnityProjectionMatrix() { Matrix4x4 mat = new Matrix4x4(); NyARFrustum.FrustumParam f = this.getFrustum().getFrustumParam(new NyARFrustum.FrustumParam()); NyARUnityUtil.toCameraFrustumRH(this._ref_param, 1, f.near, f.far, ref mat); return(mat); }
/// <summary> /// この関数は,背景画像の姿勢行列をtransformメンバに設定します. /// </summary> public void setARBackgroundTransform(Transform i_transform) { NyARFrustum f = this.getFrustum(); NyARFrustum.FrustumParam fp = f.getFrustumParam(new NyARFrustum.FrustumParam()); float bg_pos = (float)fp.far; i_transform.position = new Vector3(0, 0, (float)bg_pos); double b = bg_pos / fp.near / 10; // 10? i_transform.localScale = new Vector3((float)(-(fp.right - fp.left) * b), 1f, -(float)((fp.top - fp.bottom) * b)); i_transform.eulerAngles = new Vector3(-90, 0, 0); }
/** * {@link NyARSingleCameraSystem}のイベント通知リストへオブザーバを追加します。 * この関数は、オブザーバが起動時に使用します。ユーザが使用することは余りありません。 * @param i_observer * 通知先のオブザーバオブジェクト */ public void addObserver(INyARSingleCameraSystemObserver i_observer) { this._observer.pushAssert(i_observer); NyARFrustum.FrustumParam f = this.getFrustum().getFrustumParam(new NyARFrustum.FrustumParam()); i_observer.onUpdateCameraParametor(this._ref_param, f.near, f.far); }
/// <summary> /// This function returns OpenGL style projection matrix to output parameter. /// </summary> /// <returns> /// output parametor. /// </returns> /// <param name='i_mat'> /// i_mat object which contain projection matrix. /// </param> public Matrix4x4 getUnityProjectionMatrix(ref Matrix4x4 i_mat) { NyARFrustum.FrustumParam f = this.getFrustum().getFrustumParam(new NyARFrustum.FrustumParam()); NyARUnityUtil.ToCameraFrustumRH(this._ref_param, 1, f.near, f.far, ref i_mat); return(i_mat); }