Add file page model display

Signed-off-by: Justin Georgi <justin.georgi@gmail.com>
This commit is contained in:
2024-10-23 10:19:30 -07:00
parent 36f8cbe04b
commit 134d9203de
3 changed files with 25 additions and 77 deletions

View File

@@ -26,6 +26,26 @@ class GlModelViewer extends ImageHandler {
if ($file->getMimeType() !== 'model/gltf-binary') {
return true;
}
$result = self::buildViewer($file,$frameParams);
return false;
}
public static function onImageOpenShowImageInlineBefore( $imagepage, $out ){
$file = $imagepage->getFile();
if ($file->getMimeType() !== 'model/gltf-binary') {
return;
}
$out->addModules('ext.glmv');
$viewer = self::buildViewer($file,['class' => 'view-default']);
$out->addHtml(Html::rawElement('div',['id' => 'file', 'class' => 'fullModelView'],$viewer));
#echo '<script>';
#self::console_log($imagepage->getFile()->getFullUrl());
#self::console_log($imagepage->getFile()->getDescriptionText());
#self::console_log($out);
#echo '</script>';
}
private static function buildViewer($file, $frameParams) {
preg_match('/<pre>([\S\s]*?)<\/pre>/',$file->getDescriptionText(),$modelDescript);
$metadata = json_decode($modelDescript[1], true);
if (isset($frameParams['class'])) {
@@ -51,7 +71,7 @@ class GlModelViewer extends ImageHandler {
}
}
$attrModelView = $metadata['viewerConfig'][$viewClass];
$attrModelView = array_merge(['src' => $file->getFullUrl(), 'class' => 'mv-model'], $attrModelView);
$attrModelView = array_merge(['src' => $file->getFullUrl(), 'class' => 'mv-model', 'interpolation-decay' => '100'], $attrModelView);
$attrModelView['style'] = 'width: 100%; height: 100%; min-height: 400px;';
$elModel = Html::rawElement('model-viewer', $attrModelView, implode($hotspots));
$attrContainer = array(
@@ -59,14 +79,7 @@ class GlModelViewer extends ImageHandler {
'onmousedown' => 'clearAnnotations()',
'ontouchstart' => 'clearAnnotations()'
);
$result = Html::rawElement('div', $attrContainer, $elModel);
echo '<script>';
#GlModelViewer::console_log($handlerParams);
#GlModelViewer::console_log($frameParams['class']);
#GlModelViewer::console_log($file->getDescriptionText());
#GlModelViewer::console_log($metadata->viewerConfig->default);
echo '</script>';
return false;
return Html::rawElement('div', $attrContainer, $elModel);
}
public static function console_log($data, $add_script_tags = false) {