Three.js: allow to configure projRight/projUp.
Also, use a more appealing isometric projection if none specified, instead of orthographic. Also, use the scale, offset and projection from the viewport at the time of export.pull/10/head
parent
44223ea332
commit
afafa5ec2e
|
@ -327,7 +327,7 @@ SolvespaceControls.prototype.constructor = SolvespaceControls;
|
|||
solvespace = function(obj, params) {
|
||||
var scene, edgeScene, camera, edgeCamera, renderer;
|
||||
var geometry, controls, material, mesh, edges;
|
||||
var width, height;
|
||||
var width, height, scale, offset, projRight, projUp;
|
||||
var directionalLightArray = [];
|
||||
|
||||
if (typeof params === "undefined" || !("width" in params)) {
|
||||
|
@ -342,7 +342,32 @@ solvespace = function(obj, params) {
|
|||
height = params.height;
|
||||
}
|
||||
|
||||
if (typeof params === "undefined" || !("scale" in params)) {
|
||||
scale = 5;
|
||||
} else {
|
||||
scale = params.scale;
|
||||
}
|
||||
|
||||
if (typeof params === "undefined" || !("offset" in params)) {
|
||||
offset = new THREE.Vector3(0, 0, 0);
|
||||
} else {
|
||||
offset = params.offset;
|
||||
}
|
||||
|
||||
if (typeof params === "undefined" || !("projUp" in params)) {
|
||||
projUp = new THREE.Vector3(0, 1, -1);
|
||||
} else {
|
||||
projUp = params.projUp;
|
||||
}
|
||||
|
||||
if (typeof params === "undefined" || !("projRight" in params)) {
|
||||
projRight = new THREE.Vector3(1, 0, -1);
|
||||
} else {
|
||||
projRight = params.projRight;
|
||||
}
|
||||
|
||||
domElement = init();
|
||||
lightUpdate();
|
||||
render();
|
||||
return domElement;
|
||||
|
||||
|
@ -351,9 +376,8 @@ solvespace = function(obj, params) {
|
|||
scene = new THREE.Scene();
|
||||
edgeScene = new THREE.Scene();
|
||||
|
||||
camera = new SolvespaceCamera(width,
|
||||
height, 5, new THREE.Vector3(0, 1, 0),
|
||||
new THREE.Vector3(1, 0, 0), new THREE.Vector3(0, 0, 0));
|
||||
camera = new SolvespaceCamera(width, height, scale, projUp, projRight, offset);
|
||||
camera.NormalizeProjectionVectors();
|
||||
|
||||
mesh = createMesh(obj);
|
||||
scene.add(mesh);
|
||||
|
|
|
@ -860,7 +860,12 @@ void SolveSpaceUI::ExportMeshAsThreeJsTo(FILE *f, const std::string &filename,
|
|||
<script>
|
||||
)";
|
||||
const char htmlend[] = R"(
|
||||
document.body.appendChild(solvespace(solvespace_model_%s));
|
||||
document.body.appendChild(solvespace(solvespace_model_%s, {
|
||||
scale: %g,
|
||||
offset: new THREE.Vector3(%g, %g, %g),
|
||||
projUp: new THREE.Vector3(%g, %g, %g),
|
||||
projRight: new THREE.Vector3(%g, %g, %g)
|
||||
}));
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1001,7 +1006,12 @@ void SolveSpaceUI::ExportMeshAsThreeJsTo(FILE *f, const std::string &filename,
|
|||
fputs(" ]\n};\n", f);
|
||||
|
||||
if(extension == "html")
|
||||
fprintf(f, htmlend, baseFilename.c_str());
|
||||
fprintf(f, htmlend,
|
||||
baseFilename.c_str(),
|
||||
SS.GW.scale,
|
||||
CO(SS.GW.offset),
|
||||
CO(SS.GW.projUp),
|
||||
CO(SS.GW.projRight));
|
||||
|
||||
spl.Clear();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue