Use the camera recommended by the importer in case of no camera defined during embedding or self-hosting.

This commit is contained in:
Viktor Kovacs 2021-04-02 10:05:47 +02:00
parent 473da09052
commit 6d23481619
4 changed files with 53 additions and 23 deletions

View File

@ -1,5 +1,19 @@
OV.Init3DViewerElements = function () OV.Init3DViewerElements = function ()
{ {
function SetCamera (element, viewer, importResult)
{
let camera = null;
let cameraParams = element.getAttribute ('camera');
if (cameraParams) {
camera = OV.UrlParamConverter.UrlParameterToCamera (cameraParams);
}
if (camera !== null) {
viewer.SetCamera (camera);
} else {
viewer.SetUpVector (importResult.upVector, false);
}
}
function LoadElement (element) function LoadElement (element)
{ {
let canvas = document.createElement ('canvas'); let canvas = document.createElement ('canvas');
@ -37,6 +51,7 @@ OV.Init3DViewerElements = function ()
return true; return true;
}); });
viewer.AdjustClippingPlanes (boundingSphere); viewer.AdjustClippingPlanes (boundingSphere);
SetCamera (element, viewer, importResult);
viewer.FitToWindow (boundingSphere, false); viewer.FitToWindow (boundingSphere, false);
}, },
onTextureLoaded : function () { onTextureLoaded : function () {
@ -57,14 +72,6 @@ OV.Init3DViewerElements = function ()
return; return;
} }
let cameraParams = element.getAttribute ('camera');
if (cameraParams) {
let camera = OV.UrlParamConverter.UrlParameterToCamera (cameraParams);
if (camera !== null) {
viewer.SetCamera (camera);
}
}
loader.LoadFromUrlList (modelUrls); loader.LoadFromUrlList (modelUrls);
} }

View File

@ -12,22 +12,27 @@
<body> <body>
<iframe <iframe
src="../../website/embed.html#model=../test/testfiles/3ds/cube_four_instances.3ds,../test/testfiles/3ds/texture.png" src="../../website/embed.html#model=../test/testfiles/3ds/cube_four_instances.3ds,../test/testfiles/3ds/texture.png"
width=400 height=300 width=360 height=240
style="border:1px solid #eeeeee;">
</iframe>
<iframe
src="../../website/embed.html#model=../test/testfiles/obj/hundred_cubes.obj,../test/testfiles/obj/hundred_cubes.mtl"
width=360 height=240
style="border:1px solid #eeeeee;"> style="border:1px solid #eeeeee;">
</iframe> </iframe>
<iframe <iframe
src="../../website/embed.html#model=../test/testfiles/3ds/cube_four_instances.3ds,../test/testfiles/3ds/texture.png$camera=3.929421317669367,6.153966358575169,2.7076091223424714,1.5,1.5,0.5,0,0,1" src="../../website/embed.html#model=../test/testfiles/3ds/cube_four_instances.3ds,../test/testfiles/3ds/texture.png$camera=3.929421317669367,6.153966358575169,2.7076091223424714,1.5,1.5,0.5,0,0,1"
width=400 height=300 width=360 height=240
style="border:1px solid #eeeeee;"> style="border:1px solid #eeeeee;">
</iframe> </iframe>
<iframe <iframe
src="../../website/embed.html#model=../test/testfiles/obj/hundred_cubes.obj,../test/testfiles/obj/hundred_cubes.mtl" src="../../website/embed.html#model=../test/testfiles/obj/hundred_cubes.obj,../test/testfiles/obj/hundred_cubes.mtl$camera=1,1,1,0,0,0,0,0,1"
width=400 height=300 width=360 height=240
style="border:1px solid #eeeeee;"> style="border:1px solid #eeeeee;">
</iframe> </iframe>
<iframe <iframe
src="../../website/embed.html#model=wrong.3ds" src="../../website/embed.html#model=wrong.3ds"
width=400 height=300 width=360 height=240
style="border:1px solid #eeeeee;"> style="border:1px solid #eeeeee;">
</iframe> </iframe>
</body> </body>

View File

@ -19,19 +19,35 @@
div.online_3d_viewer div.online_3d_viewer
{ {
float: left; float: left;
border: 1px solid #eeeeee;
margin: 0px 4px 4px 0px;
} }
</style> </style>
</head> </head>
<body> <body>
<div class="online_3d_viewer" width="400" height="300" model="../../test/testfiles/3ds/cube_four_instances.3ds,../../test/testfiles/3ds/texture.png"></div>
<div class="online_3d_viewer" <div class="online_3d_viewer"
width="400" height="300" width="360" height="240"
model="../../test/testfiles/3ds/cube_four_instances.3ds,../../test/testfiles/3ds/texture.png" model="../../test/testfiles/3ds/cube_four_instances.3ds,../../test/testfiles/3ds/texture.png">
camera="-1.5,-3.0,2.0,0,0,0,0,0,1"> </div>
<div class="online_3d_viewer"
width="360" height="240"
model="../../test/testfiles/obj/hundred_cubes.obj,../../test/testfiles/obj/hundred_cubes.mtl">
</div>
<div class="online_3d_viewer"
width="360" height="240"
model="../../test/testfiles/3ds/cube_four_instances.3ds,../../test/testfiles/3ds/texture.png"
camera="3.929421317669367,6.153966358575169,2.7076091223424714,1.5,1.5,0.5,0,0,1">
</div>
<div class="online_3d_viewer"
width="360" height="240"
model="../../test/testfiles/obj/hundred_cubes.obj,../../test/testfiles/obj/hundred_cubes.mtl"
camera="1,1,1,0,0,0,0,0,1">
</div>
<div class="online_3d_viewer"
width="360" height="240"
model="wrong.3ds">
</div> </div>
<div class="online_3d_viewer" width="400" height="300" model="../../test/testfiles/obj/hundred_cubes.obj,../../test/testfiles/obj/hundred_cubes.mtl"></div>
<div class="online_3d_viewer" width="400" height="300" model="wrong.3ds"></div>
</body> </body>
</html> </html>

View File

@ -20,10 +20,6 @@ OV.Embed = class
if (urls === null) { if (urls === null) {
return; return;
} }
let camera = this.hashHandler.GetCameraFromHash ();
if (camera !== null) {
this.viewer.SetCamera (camera);
}
this.modelLoader.LoadFromUrlList (urls); this.modelLoader.LoadFromUrlList (urls);
let hashParameters = OV.CreateUrlParameters (urls, null); let hashParameters = OV.CreateUrlParameters (urls, null);
let websiteUrl = this.parameters.websiteLinkDiv.attr ('href') + '#' + hashParameters; let websiteUrl = this.parameters.websiteLinkDiv.attr ('href') + '#' + hashParameters;
@ -45,6 +41,12 @@ OV.Embed = class
return true; return true;
}); });
this.viewer.AdjustClippingPlanes (boundingSphere); this.viewer.AdjustClippingPlanes (boundingSphere);
let camera = this.hashHandler.GetCameraFromHash ();
if (camera !== null) {
this.viewer.SetCamera (camera);
} else {
this.viewer.SetUpVector (importResult.upVector, false);
}
this.viewer.FitToWindow (boundingSphere, false); this.viewer.FitToWindow (boundingSphere, false);
} }