-
-
Notifications
You must be signed in to change notification settings - Fork 440
Expand file tree
/
Copy pathCamera.java
More file actions
245 lines (213 loc) · 6.58 KB
/
Copy pathCamera.java
File metadata and controls
245 lines (213 loc) · 6.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
package app.f3d.F3D;
public class Camera {
/**
* A class containing all information to configure a camera.
*/
public static class CameraState {
/**
* Camera position [x, y, z].
*/
public double[] position;
/**
* Camera focal point [x, y, z].
*/
public double[] focalPoint;
/**
* Camera view up vector [x, y, z].
*/
public double[] viewUp;
/**
* Camera view angle in degrees.
*/
public double viewAngle;
/**
* Create a camera state with default values.
*/
public CameraState() {
this.position = new double[] { 0.0, 0.0, 1.0 };
this.focalPoint = new double[] { 0.0, 0.0, 0.0 };
this.viewUp = new double[] { 0.0, 1.0, 0.0 };
this.viewAngle = 30.0;
}
/**
* Create a camera state with specified values.
*
* @param position camera position [x, y, z]
* @param focalPoint camera focal point [x, y, z]
* @param viewUp camera view up vector [x, y, z]
* @param viewAngle camera view angle in degrees
*/
public CameraState(double[] position, double[] focalPoint, double[] viewUp, double viewAngle) {
this.position = position;
this.focalPoint = focalPoint;
this.viewUp = viewUp;
this.viewAngle = viewAngle;
}
}
public Camera(long nativeAddress) {
mNativeAddress = nativeAddress;
}
/**
* Set the position of the camera.
*
* @param pos array of 3 doubles [x, y, z]
* @return this camera for method chaining
*/
public native Camera setPosition(double[] pos);
/**
* Get the position of the camera.
*
* @return array of 3 doubles [x, y, z]
*/
public native double[] getPosition();
/**
* Set the focal point of the camera.
*
* @param foc array of 3 doubles [x, y, z]
* @return this camera for method chaining
*/
public native Camera setFocalPoint(double[] foc);
/**
* Get the focal point of the camera.
*
* @return array of 3 doubles [x, y, z]
*/
public native double[] getFocalPoint();
/**
* Set the view up vector of the camera.
*
* @param up array of 3 doubles [x, y, z]
* @return this camera for method chaining
*/
public native Camera setViewUp(double[] up);
/**
* Get the view up vector of the camera.
*
* @return array of 3 doubles [x, y, z]
*/
public native double[] getViewUp();
/**
* Set the view angle in degrees of the camera.
*
* @param angle view angle in degrees
* @return this camera for method chaining
*/
public native Camera setViewAngle(double angle);
/**
* Get the view angle in degrees of the camera.
*
* @return view angle in degrees
*/
public native double getViewAngle();
/**
* Set the complete state of the camera.
*
* @param state camera state to set
* @return this camera for method chaining
*/
public native Camera setState(CameraState state);
/**
* Get the complete state of the camera.
*
* @return current camera state
*/
public native CameraState getState();
/**
* Divide the camera's distance from the focal point by the given value.
*
* @param val dolly factor
* @return this camera for method chaining
*/
public native Camera dolly(double val);
/**
* Move the camera along its horizontal, vertical, and forward axes.
*
* @param right distance to move right
* @param up distance to move up
* @param forward distance to move forward
* @return this camera for method chaining
*/
public native Camera pan(double right, double up, double forward);
/**
* Move the camera along its horizontal and vertical axes.
*
* @param right distance to move right
* @param up distance to move up
* @return this camera for method chaining
*/
public Camera pan(double right, double up) {
return pan(right, up, 0.0);
}
/**
* Decrease the view angle (or the parallel scale in parallel mode) by the specified factor.
*
* @param factor zoom factor
* @return this camera for method chaining
*/
public native Camera zoom(double factor);
/**
* Rotate the camera about its forward axis.
*
* @param angle rotation angle in degrees
* @return this camera for method chaining
*/
public native Camera roll(double angle);
/**
* Rotate the camera about its vertical axis, centered at the focal point.
*
* @param angle rotation angle in degrees
* @return this camera for method chaining
*/
public native Camera azimuth(double angle);
/**
* Rotate the camera about its vertical axis, centered at the camera's position.
*
* @param angle rotation angle in degrees
* @return this camera for method chaining
*/
public native Camera yaw(double angle);
/**
* Rotate the camera about its horizontal axis, centered at the focal point.
*
* @param angle rotation angle in degrees
* @return this camera for method chaining
*/
public native Camera elevation(double angle);
/**
* Rotate the camera about its horizontal axis, centered at the camera's position.
*
* @param angle rotation angle in degrees
* @return this camera for method chaining
*/
public native Camera pitch(double angle);
/**
* Store the current camera configuration as default.
*
* @return this camera for method chaining
*/
public native Camera setCurrentAsDefault();
/**
* Reset the camera to the stored default camera configuration.
*
* @return this camera for method chaining
*/
public native Camera resetToDefault();
/**
* Reset the camera using the bounds of actors in the scene.
* Provided zoomFactor will be used to position the camera.
* A value of 1 corresponds to the bounds roughly aligned to the edges of the window.
*
* @param zoomFactor zoom factor (default 0.9)
* @return this camera for method chaining
*/
public native Camera resetToBounds(double zoomFactor);
/**
* Reset the camera using the bounds of actors in the scene with default zoom factor.
*
* @return this camera for method chaining
*/
public Camera resetToBounds() {
return resetToBounds(0.9);
}
private long mNativeAddress;
}