root/as3/FLARToolKit/trunk/src/com/libspark/flartoolkit/scene/FLARCamera3D.as

リビジョン 470, 2.8 kB (コミッタ: saqoosha, コミット時期: 2 年 前)

いらんファイルとかとりあえず削除した。
FLARParam の値をちゃんと使う、FLARCamera3D つくった。ズレテナーイ。

  • svn:mime-type 属性の設定値: text/plain
Line 
1 package com.libspark.flartoolkit.scene {
2        
3         import com.libspark.flartoolkit.core.FLARMat;
4         import com.libspark.flartoolkit.core.FLARParam;
5         import com.libspark.flartoolkit.util.ArrayUtil;
6        
7         import org.papervision3d.cameras.FrustumCamera3D;
8         import org.papervision3d.core.math.Matrix3D;
9         import org.papervision3d.core.proto.CameraObject3D;
10         import org.papervision3d.view.Viewport3D;
11
12         public class FLARCamera3D extends FrustumCamera3D {
13                
14                 private static const NEAR_CLIP:Number = 10;
15                 private static const FAR_CLIP:Number = 10000;
16                
17                 public function FLARCamera3D(viewport3D:Viewport3D, param:FLARParam) {
18                         super(viewport3D);
19                         this.z = 0;
20                        
21                         var m_projection:Array = new Array(16);//new double[16];
22                         var trans_mat:FLARMat = new FLARMat(3,4);
23                         var icpara_mat:FLARMat = new FLARMat(3,4);
24                 var p:Array = ArrayUtil.createMultidimensionalArray(3, 3);//new double[3][3], q=new double[4][4];
25                 var q:Array = ArrayUtil.createMultidimensionalArray(4, 4);
26                 var width:int;
27                 var height:int;
28                 var i:int;
29                         var j:int;
30                
31                 width  = param.getX();
32                 height = param.getY();
33                
34                 param.decompMat(icpara_mat, trans_mat);
35        
36                 var icpara:Array = icpara_mat.getArray();
37                 var trans:Array = trans_mat.getArray();
38                 for (i = 0; i < 4; i++) {
39                     icpara[1][i] = (height - 1) * (icpara[2][i]) - icpara[1][i];
40                 }
41                
42                 for(i = 0; i < 3; i++) {
43                     for(j = 0; j < 3; j++) {
44                         p[i][j] = icpara[i][j] / icpara[2][2];
45                     }
46                 }
47                 q[0][0] = (2.0 * p[0][0] / (width - 1));
48                 q[0][1] = (2.0 * p[0][1] / (width - 1));
49                 q[0][2] = -((2.0 * p[0][2] / (width - 1))  - 1.0);
50                 q[0][3] = 0.0;
51                
52                 q[1][0] = 0.0;
53                 q[1][1] = -(2.0 * p[1][1] / (height - 1));
54                 q[1][2] = -((2.0 * p[1][2] / (height - 1)) - 1.0);
55                 q[1][3] = 0.0;
56                
57                 q[2][0] = 0.0;
58                 q[2][1] = 0.0;
59                 q[2][2] = -(FAR_CLIP + NEAR_CLIP) / (NEAR_CLIP - FAR_CLIP);
60                 q[2][3] = 2.0 * FAR_CLIP * NEAR_CLIP / (NEAR_CLIP - FAR_CLIP);
61                
62                 q[3][0] = 0.0;
63                 q[3][1] = 0.0;
64                 q[3][2] = 1.0;
65                 q[3][3] = 0.0;
66                
67                 for (i = 0; i < 4; i++) { // Row.
68                         // First 3 columns of the current row.
69                     for (j = 0; j < 3; j++) { // Column.
70                         m_projection[i*4 + j] =
71                             q[i][0] * trans[0][j] +
72                             q[i][1] * trans[1][j] +
73                             q[i][2] * trans[2][j];
74                     }
75                         // Fourth column of the current row.
76                     m_projection[i*4 + 3]=
77                                 q[i][0] * trans[0][3] +
78                                 q[i][1] * trans[1][3] +
79                         q[i][2] * trans[2][3] +
80                         q[i][3];
81                 }
82                
83                 this._projection = new Matrix3D(m_projection);
84                 }
85                
86         }
87        
88 }
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。