Develop and Download Open Source Software

Browse Subversion Repository

Annotation of /nyar4psg/trunk/src/src/jp/nyatla/nyar4psg/NyARPsgBaseClass.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1123 - (hide annotations) (download) (as text)
Wed Dec 12 07:13:34 2012 UTC (11 years, 3 months ago) by nyatla
Original Path: nyar4psg/trunk/for2.x/src/jp/nyatla/nyar4psg/NyARPsgBaseClass.java
File MIME type: text/x-java
File size: 11130 byte(s)
add psg2.0 samples
1 nyatla 420 /*
2     * PROJECT: NyARToolkit for proce55ing.
3     * --------------------------------------------------------------------------------
4     * The MIT License
5     * Copyright (c) 2008 nyatla
6     * airmail(at)ebony.plala.or.jp
7     * http://nyatla.jp/nyartoolkit/
8     *
9     * Permission is hereby granted, free of charge, to any person obtaining a copy
10     * of this software and associated documentation files (the "Software"), to deal
11     * in the Software without restriction, including without limitation the rights
12     * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13     * copies of the Software, and to permit persons to whom the Software is
14     * furnished to do so, subject to the following conditions:
15     * The above copyright notice and this permission notice shall be included in
16     * all copies or substantial portions of the Software.
17     *
18     * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19     * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20     * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21     * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22     * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23     * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24     * THE SOFTWARE.
25     *
26     */
27    
28     package jp.nyatla.nyar4psg;
29    
30 nyatla 814
31 nyatla 971
32 nyatla 420 import processing.core.*;
33 nyatla 1120 import processing.opengl.*;
34 nyatla 971 import jp.nyatla.nyartoolkit.core.*;
35 nyatla 814 import jp.nyatla.nyartoolkit.core.types.matrix.NyARDoubleMatrix44;
36 nyatla 420
37    
38 nyatla 820
39 nyatla 420 /**
40 nyatla 814 * ���������������������NyARToolkit for Processing������������������������������
41     * ARToolkit���������������������������������������������������������������������������������������������
42 nyatla 420 */
43 nyatla 1063 public abstract class NyARPsgBaseClass
44 nyatla 420 {
45 nyatla 853 /**
46     * near���������������������������������������������
47     */
48     public final float FRUSTUM_DEFAULT_NEAR_CLIP=100;
49     /**
50     * far���������������������������������������������
51     */
52     public final float FRUSTUM_DEFAULT_FAR_CLIP=100000;
53 nyatla 828
54 nyatla 420 /**
55     * ���������������������������������
56 nyatla 814 * NyAR4psg������������������������������������������
57 nyatla 420 */
58 nyatla 1120 public final static String VERSION = "NyAR4psg/1.3.1;"+NyARVersion.VERSION_STRING;
59 nyatla 820 /**���������������Applet������������������������������*/
60     protected PApplet _ref_papplet;
61 nyatla 854 /**���������������������������������ModelviewMatrix���������*/
62     protected final PMatrix3D _ps_background_mv=new PMatrix3D();
63    
64 nyatla 820 /**���ARToolkit���������������������������������������������*/
65 nyatla 828 protected NyAR4PsgConfig _config;
66    
67 nyatla 971
68 nyatla 853
69     private float _clip_far;
70     private float _clip_near;
71 nyatla 971
72 nyatla 820 /**
73     * ������������������������������
74     */
75     protected NyARPsgBaseClass()
76 nyatla 420 {
77 nyatla 820 }
78 nyatla 971 protected void initInstance(PApplet parent,NyAR4PsgConfig i_config) throws NyARException
79 nyatla 820 {
80 nyatla 971 this._ref_papplet=parent;
81     this._config=i_config;
82 nyatla 814 //Processing���projectionMatrix���������������Frustum���������
83 nyatla 853 this.setARClipping(FRUSTUM_DEFAULT_NEAR_CLIP,FRUSTUM_DEFAULT_FAR_CLIP);
84     return;
85 nyatla 420 }
86 nyatla 820 /**
87 nyatla 971 * [readonly]������������������Processing���������ProjectionMatrix������������������������������
88 nyatla 876 * @return
89 nyatla 971 */
90     public abstract PMatrix3D getProjectionMatrix();
91     /**
92     * ������������������ProjectionMatrix���i_buf������������������������������
93     * @return
94 nyatla 876 * ProjectionMatrix���������
95     */
96 nyatla 971 public abstract PMatrix3D getProjectionMatrix(PMatrix3D i_buf);
97 nyatla 876 /**
98 nyatla 854 * ������������������PImage������������������������������������������������PImage���farclip���+1������������������������������
99 nyatla 853 * <div>���������������������������������������������������</div>
100     * <hr/>
101     * :<br/>
102 nyatla 1123 * PMatrix3D om=new PMatrix3D(((PGrapPGraphicsOpenGLhics3D)g).projection);<br/>
103 nyatla 854 * setBackgroundOrtho(img.width,img.height)<br/>
104 nyatla 853 * pushMatrix();<br/>
105 nyatla 854 * resetMatrix();<br/>
106     * translate(0,0,-(far*0.99f));<br/>
107 nyatla 853 * image(img,-width/2,-height/2);<br/>
108     * popMatrix();<br/>
109     * setPerspective(om);<br/>
110     * :<br/>
111     * <hr/>
112     * ������������������PrjectionMatrix���ModelViewMatrix���������������������������������������������������������������������
113     * ���������������������������������������������������������������������
114     * @param i_img
115     * ���������������������������������
116     */
117     public void drawBackground(PImage i_img)
118     {
119     PApplet pa=this._ref_papplet;
120 nyatla 1123 PGraphicsOpenGL pgl=((PGraphicsOpenGL)pa.g);
121     //���������������
122     pgl.pushProjection();
123 nyatla 854 this.setBackgroundOrtho(i_img.width,i_img.height);
124 nyatla 853 pa.pushMatrix();
125 nyatla 854 pa.setMatrix(this._ps_background_mv);
126 nyatla 853 pa.image(i_img,-i_img.width/2,-i_img.height/2);
127     pa.popMatrix();
128     //���������������
129 nyatla 1123 pgl.popProjection();
130 nyatla 853 }
131    
132     /**
133     * ������������������������������������������������������������������������������������������������������{@link #FRUSTUM_DEFAULT_NEAR_CLIP}���{@link #FRUSTUM_DEFAULT_FAR_CLIP}���������
134     * ������������������������{@link #setARPerspective()}������������������������������������������������������������������������������������������������������������������
135     * @param i_near
136     * NearPlane������������������������������������[mm]���������
137     * @param i_far
138     * FarPlane������������������������������������[mm]���������
139     */
140     public void setARClipping(float i_near,float i_far)
141     {
142     this._clip_far=i_far;
143     this._clip_near=i_near;
144 nyatla 854 this._ps_background_mv.reset();
145     this._ps_background_mv.translate(0,0,-i_far);
146 nyatla 853 }
147     /**
148     * ������������������������������������Processing������������������������
149 nyatla 854 * ������������������0,0���������������������������
150     * near���������������������{@link #setARClipping}������������������������������������������������������
151     *���far���������������������{@link #setARClipping}���������������������������������+1���������������������
152 nyatla 853 * <div>���������������������������������������������������</div>
153     * <hr/>
154     * :<br/>
155 nyatla 1120 * //for 1.x<br/>
156 nyatla 854 * ortho(-i_width/2, i_width/2,-i_height/2,i_height/2,near,far+1);<br/>
157 nyatla 1120 * //for 2.x<br/>
158     * ortho(0,i_width,0,i_height,near,far+1);<br/>
159 nyatla 853 * :<br/>
160     * <hr/>
161     * @param i_width
162     * ������������������������
163     * @param i_height
164     * ���������������������������
165     */
166 nyatla 854 public void setBackgroundOrtho(int i_width,int i_height)
167 nyatla 853 {
168 nyatla 1120 this._ref_papplet.ortho(0,i_width,0,i_height,this._clip_near,this._clip_far+1);
169 nyatla 853 }
170     /**
171 nyatla 820 * ������������������ARToolKit���������ProjectionMatrix���Processing������������������������
172     * ���������������������������Processing���ProjectionMatrix���ARToolKit���������������������������������������������������������������������������������������������������������������������
173 nyatla 1123 * Processing������������������Frustum���������������������{@link PGraphicsOpenGL#perspective()}������������������
174     * Frustum���������������������������{@link PGraphicsOpenGL#perspective()}���{@link PGraphicsOpenGL#perspective()}���������������������������������
175 nyatla 854 * <p>
176 nyatla 1123 * Version 1.1.0���������������projection matrix���������������������������������������projection matrix���������������������{@link PGraphicsOpenGL#projection}���������������������������������������
177 nyatla 854 * </p>
178 nyatla 820 */
179 nyatla 853 public void setARPerspective()
180 nyatla 814 {
181 nyatla 971 this.setPerspective(this.getProjectionMatrix());
182 nyatla 820 }
183     /**
184     * ������������������ProjectionMatrix���Processing������������������������
185     * @param i_projection
186     * ������������ProjectionMatrix���������������������
187 nyatla 839 * <p>
188     * Processing/1.3������������������{@link PApplet#matrixMode}���������������������������������������������������������
189     * ������������������������frustum������
190     * </p>
191 nyatla 854 * <p>
192 nyatla 1123 * Version 1.1.0���������������projection matrix���������������������������������������projection matrix���������������������{@link PGraphicsOpenGL#projection}���������������������������������������
193 nyatla 854 * </p>
194 nyatla 820 */
195 nyatla 853 public void setPerspective(PMatrix3D i_projection)
196 nyatla 820 {
197 nyatla 839 //Projection���frustum������������������
198     float far=i_projection.m23/(i_projection.m22+1);
199     float near=i_projection.m23/(i_projection.m22-1);
200     this._ref_papplet.frustum(
201     (i_projection.m02-1)*near/i_projection.m00,
202     (i_projection.m02+1)*near/i_projection.m00,
203     (i_projection.m12-1)*near/i_projection.m11,
204     (i_projection.m12+1)*near/i_projection.m11,
205     near,far);
206 nyatla 853 return;
207 nyatla 820 }
208    
209     protected static void PMatrix2GLProjection(PMatrix3D i_in,float[] o_out)
210     {
211     o_out[ 0]=i_in.m00;
212     o_out[ 1]=i_in.m10;
213     o_out[ 2]=i_in.m20;
214     o_out[ 3]=i_in.m30;
215     o_out[ 4]=i_in.m01;
216     o_out[ 5]=i_in.m11;
217     o_out[ 6]=i_in.m21;
218     o_out[ 7]=i_in.m31;
219     o_out[ 8]=i_in.m02;
220     o_out[ 9]=i_in.m12;
221     o_out[10]=i_in.m22;
222     o_out[11]=i_in.m32;
223     o_out[12]=i_in.m03;
224     o_out[13]=i_in.m13;
225     o_out[14]=i_in.m23;
226     o_out[15]=i_in.m33;
227     }
228     protected static void PMatrix2GLProjection(PMatrix3D i_in,double[] o_out)
229     {
230     o_out[ 0]=i_in.m00;
231     o_out[ 1]=i_in.m10;
232     o_out[ 2]=i_in.m20;
233     o_out[ 3]=i_in.m30;
234     o_out[ 4]=i_in.m01;
235     o_out[ 5]=i_in.m11;
236     o_out[ 6]=i_in.m21;
237     o_out[ 7]=i_in.m31;
238     o_out[ 8]=i_in.m02;
239     o_out[ 9]=i_in.m12;
240     o_out[10]=i_in.m22;
241     o_out[11]=i_in.m32;
242     o_out[12]=i_in.m03;
243     o_out[13]=i_in.m13;
244     o_out[14]=i_in.m23;
245     o_out[15]=i_in.m33;
246     }
247 nyatla 971 protected static void nyarMat2PsMat(NyARDoubleMatrix44 i_src,PMatrix3D i_dst)
248 nyatla 820 {
249 nyatla 971 i_dst.m00=(float)(i_src.m00);
250     i_dst.m01=(float)(i_src.m01);
251     i_dst.m02=(float)(i_src.m02);
252     i_dst.m03=(float)(i_src.m03);
253     i_dst.m10=(float)(i_src.m10);
254     i_dst.m11=(float)(i_src.m11);
255     i_dst.m12=(float)(i_src.m12);
256     i_dst.m13=(float)(i_src.m13);
257     i_dst.m20=(float)(i_src.m20);
258     i_dst.m21=(float)(i_src.m21);
259     i_dst.m22=(float)(i_src.m22);
260     i_dst.m23=(float)(i_src.m23);
261     i_dst.m30=(float)(i_src.m30);
262     i_dst.m31=(float)(i_src.m31);
263     i_dst.m32=(float)(i_src.m32);
264     i_dst.m33=(float)(i_src.m33);
265 nyatla 814 }
266 nyatla 971
267 nyatla 420 /**
268 nyatla 814 * ���������������������������
269 nyatla 420 */
270 nyatla 853 private final static PMatrix3D _lh_mat=new PMatrix3D(
271     -1,0,0,0,
272     0,1,0,0,
273     0,0,1,0,
274     0,0,0,1);
275 nyatla 814
276 nyatla 420 /**
277 nyatla 814 * ���������������Processing���Matrix���������������������
278     * @param i_src
279     * @param i_mode
280     * @param o_pmatrix
281 nyatla 420 */
282 nyatla 828 protected static void matResult2PMatrix3D(NyARDoubleMatrix44 i_src,int i_mode,PMatrix3D o_pmatrix)
283 nyatla 814 {
284     o_pmatrix.m00 = (float)i_src.m00;
285     o_pmatrix.m01 = (float)i_src.m01;
286     o_pmatrix.m02 = (float)i_src.m02;
287     o_pmatrix.m03 = (float)i_src.m03;
288     o_pmatrix.m10 = (float)i_src.m10;//mirror
289     o_pmatrix.m11 = (float)i_src.m11;//mirror
290     o_pmatrix.m12 = (float)i_src.m12;//mirror
291     o_pmatrix.m13 = (float)i_src.m13;//mirror
292     o_pmatrix.m20 = (float)-i_src.m20;
293     o_pmatrix.m21 = (float)-i_src.m21;
294     o_pmatrix.m22 = (float)-i_src.m22;
295     o_pmatrix.m23 = (float)-i_src.m23;
296     o_pmatrix.m30 = 0.0f;
297     o_pmatrix.m31 = 0.0f;
298     o_pmatrix.m32 = 0.0f;
299     o_pmatrix.m33 = 1.0f;
300 nyatla 828 if(i_mode==NyAR4PsgConfig.CS_LEFT_HAND)
301 nyatla 814 {
302     o_pmatrix.apply(_lh_mat);
303     }
304 nyatla 825 }
305 nyatla 971 protected static void matResult2GLArray(NyARDoubleMatrix44 i_src,double[] o_gl_array)
306 nyatla 825 {
307 nyatla 971 o_gl_array[0 + 0 * 4] = i_src.m00;
308     o_gl_array[0 + 1 * 4] = i_src.m01;
309     o_gl_array[0 + 2 * 4] = i_src.m02;
310     o_gl_array[0 + 3 * 4] = i_src.m03;
311     o_gl_array[1 + 0 * 4] = -i_src.m10;
312     o_gl_array[1 + 1 * 4] = -i_src.m11;
313     o_gl_array[1 + 2 * 4] = -i_src.m12;
314     o_gl_array[1 + 3 * 4] = -i_src.m13;
315     o_gl_array[2 + 0 * 4] = -i_src.m20;
316     o_gl_array[2 + 1 * 4] = -i_src.m21;
317     o_gl_array[2 + 2 * 4] = -i_src.m22;
318     o_gl_array[2 + 3 * 4] = -i_src.m23;
319     o_gl_array[3 + 0 * 4] = 0.0;
320     o_gl_array[3 + 1 * 4] = 0.0;
321     o_gl_array[3 + 2 * 4] = 0.0;
322     o_gl_array[3 + 3 * 4] = 1.0;
323 nyatla 814 }
324 nyatla 420
325 nyatla 971 }
326    

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26