-
Notifications
You must be signed in to change notification settings - Fork 26
Expand file tree
/
Copy pathview.js
More file actions
118 lines (92 loc) · 4.55 KB
/
Copy pathview.js
File metadata and controls
118 lines (92 loc) · 4.55 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
module("View", {
});
test("Change view", 5, function() {
stop();
var frameLoaded = Q.fcall(promiseIFrameLoaded, "scenes/view.html");
var changeFunction = function(f, args) {
return function(scene) {
scene.ownerDocument.defaultView[f].apply(null, args);
return scene;
}
};
var initialView = frameLoaded.then(function(doc) { return doc.querySelector("xml3d") }).then(promiseSceneRendered).then(function (s) {
var pick = XML3DUnit.getPixelValue(getContextForXml3DElement(s),50,50);
QUnit.closeArray(pick, [0, 0, 0, 0], PIXEL_EPSILON, "transparent");
pick = XML3DUnit.getPixelValue(getContextForXml3DElement(s),250,130);
QUnit.closeArray(pick, [159, 0, 0, 255], PIXEL_EPSILON, "red");
return s;
});
var frontView = initialView.then(changeFunction("changeView", ["front"])).then(promiseSceneRendered).then(function (s) {
var pick = XML3DUnit.getPixelValue(getContextForXml3DElement(s),250,130);
QUnit.closeArray(pick, [0, 0, 255, 255], PIXEL_EPSILON, "blue");
return s;
});
var rearView = frontView.then(changeFunction("changeView", ["rear"])).then(promiseSceneRendered).then(function (s) {
var pick = XML3DUnit.getPixelValue(getContextForXml3DElement(s),250,130);
QUnit.closeArray(pick, [159, 0, 0, 255], PIXEL_EPSILON, "read");
return s;
});
rearView.fin(QUnit.start).done();
});
test("urn:xml3d:view:projection", 5, function() {
stop();
var frameLoaded = Q.fcall(promiseIFrameLoaded, "scenes/view.html");
var changeFunction = function(f, args) {
return function(scene) {
scene.ownerDocument.defaultView[f].apply(null, args);
return scene;
}
};
var defaultView = frameLoaded.then(function(doc) { return doc.querySelector("xml3d") }).then(promiseSceneRendered).then(function (s) {
var view = s.querySelector(s.view);
QUnit.closeMatrix(view.getProjectionMatrix(), XML3D.Mat4.perspective(45 / 180 * Math.PI, 500/ 300, 8.95, 11.05), EPSILON);
return s;
});
var customFOVVertical = defaultView.then(changeFunction("changeView", ["top"])).then(promiseSceneRendered).then(function (s) {
var view = s.querySelector(s.view);
QUnit.closeMatrix(view.getProjectionMatrix(), XML3D.Mat4.perspective(0.2, 500 / 300, 8.95, 11.05), EPSILON);
return s;
});
var customFOVHorizontal = customFOVVertical.then(changeFunction("changeView", ["bottom"])).then(promiseSceneRendered).then(function (s) {
var view = s.querySelector(s.view);
var frustum = new XML3DTestLib.Frustum.Frustum(8.95, 11.05, 0.5, 0, 500 / 300);
var expected = new XML3D.Mat4();
frustum.getProjectionMatrix(expected);
QUnit.closeMatrix(view.getProjectionMatrix(), expected, EPSILON);
return s;
});
var customNearFar = customFOVHorizontal.then(changeFunction("changeView", ["left"])).then(promiseSceneRendered).then(function (s) {
var view = s.querySelector(s.view);
var frustum = new XML3DTestLib.Frustum.Frustum(0.2, 20, 0, 0.2, 500 / 300);
var expected = new XML3D.Mat4();
frustum.getProjectionMatrix(expected);
QUnit.closeMatrix(view.getProjectionMatrix(), expected, EPSILON, "custom near/far plane");
return s;
});
customNearFar.fin(QUnit.start).done();
});
test("urn:xml3d:view:projective", 3, function() {
stop();
var frameLoaded = Q.fcall(promiseIFrameLoaded, "scenes/view.html");
var changeFunction = function(f, args) {
return function(scene) {
scene.ownerDocument.defaultView[f].apply(null, args);
return scene;
}
};
var defaultProjective = frameLoaded.then(function(doc) {return doc.querySelector("xml3d") })
.then(changeFunction("changeView", ["left_projective"]))
.then(promiseSceneRendered).then(function (s) {
var view = s.querySelector(s.view);
QUnit.closeMatrix(view.getProjectionMatrix(), XML3D.Mat4.perspective((45 * Math.PI / 180), 1, 0.001, 10000), EPSILON, "Default matrix");
return s;
});
var customProjective = defaultProjective.then(changeFunction("changeView", ["right_projective"]))
.then(promiseSceneRendered).then(function (s) {
var view = s.querySelector(s.view);
var reference = s.querySelector("#view_right");
QUnit.closeMatrix(view.getProjectionMatrix(), reference.getProjectionMatrix(), EPSILON, "Custom projective matrix");
return s;
});
customProjective.fin(QUnit.start).done();
});