{"id":298579,"date":"2026-04-28T20:47:05","date_gmt":"2026-04-28T20:47:05","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/minimal-model-viewer-block\/"},"modified":"2026-04-28T20:45:31","modified_gmt":"2026-04-28T20:45:31","slug":"marctv-3d-model-embed-block","status":"publish","type":"plugin","link":"https:\/\/tw.wordpress.org\/plugins\/marctv-3d-model-embed-block\/","author":756138,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.0","stable_tag":"1.0.0","tested":"6.9.4","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"MarcTV 3D Model Embed Block","header_author":"Marc Toensing","header_description":"Embed GLB and glTF models in the block editor with a simple Gutenberg block.","assets_banners_color":"3e61de","last_updated":"2026-04-28 20:45:31","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/marc.tv","rating":0,"author_block_rating":0,"active_installs":0,"downloads":62,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"MarcDK","date":"2026-04-28 20:45:31"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3517793,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3517793,"resolution":"256x256","location":"assets","locale":""},"icon.svg":{"filename":"icon.svg","revision":3517793,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3517793,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3517793,"resolution":"772x250","location":"assets","locale":""},"banner.svg":{"filename":"banner.svg","revision":3517793,"resolution":false,"location":"assets","locale":false}},"assets_blueprints":{},"all_blocks":{"marctv-3d-model-embed-block\/block":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"marctv-3d-model-embed-block\/block","version":"1.0.0","title":"3D Model Embed Block","category":"media","icon":"format-image","description":"Embeds a GLB or glTF 3D model with interactive mouse and touch controls.","keywords":["3d","glb","gltf"],"textdomain":"marctv-3d-model-embed-block","attributes":{"modelUrl":{"type":"string","default":""},"modelId":{"type":"number"},"posterUrl":{"type":"string","default":""},"posterId":{"type":"number"},"alt":{"type":"string","default":""},"height":{"type":"number","default":520},"cameraDistance":{"type":"number","default":105},"cameraControls":{"type":"boolean","default":true},"zoomEnabled":{"type":"boolean","default":false},"autoRotate":{"type":"boolean","default":true},"rotationPerSecond":{"type":"number","default":30},"startAngle":{"type":"number","default":0},"transparentBackground":{"type":"boolean","default":true},"backgroundColor":{"type":"string","default":"#f3efe4"}},"supports":{"align":["wide","full"],"html":false},"editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","style":"file:.\/style-index.css","viewScript":"marctv-3d-model-embed-block-element"}},"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[783,251327,132879,148076,199623],"plugin_category":[],"plugin_contributors":[84390],"plugin_business_model":[],"class_list":["post-298579","plugin","type-plugin","status-publish","hentry","plugin_tags-3d","plugin_tags-glb","plugin_tags-gltf","plugin_tags-gutenberg","plugin_tags-model-viewer","plugin_contributors-marcdk","plugin_committers-marcdk"],"banners":{"banner":"https:\/\/ps.w.org\/marctv-3d-model-embed-block\/assets\/banner-772x250.png?rev=3517793","banner_2x":"https:\/\/ps.w.org\/marctv-3d-model-embed-block\/assets\/banner-1544x500.png?rev=3517793","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/marctv-3d-model-embed-block\/assets\/icon.svg?rev=3517793","icon":"https:\/\/ps.w.org\/marctv-3d-model-embed-block\/assets\/icon.svg?rev=3517793","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Adds a block for interactive 3D models in <code>.glb<\/code> and <code>.gltf<\/code> format from the media library.\nYou can keep interaction limited to horizontal rotation or enable zoom explicitly when needed.<\/p>\n\n<p>This plugin is being developed on GitHub https:\/\/github.com\/mtoensing\/marctv-3d-model-embed-block<\/p>\n\n<p>Includes the <code>model-viewer<\/code> runtime locally:<\/p>\n\n<ul>\n<li>Project: https:\/\/modelviewer.dev\/<\/li>\n<li>Source: https:\/\/github.com\/google\/model-viewer<\/li>\n<li>Package: <code>@google\/model-viewer<\/code><\/li>\n<li>Version: <code>4.2.0<\/code><\/li>\n<li>Bundled file: <code>public\/vendor\/model-viewer\/4.2.0\/model-viewer-umd.min.js<\/code><\/li>\n<li>License: Apache License 2.0<\/li>\n<\/ul>\n\n<p>The bundled file is kept versioned in the plugin and documented alongside the asset.<\/p>\n\n<h3>Source Code and Build Instructions<\/h3>\n\n<p>The generated block assets in <code>build\/<\/code> are compiled from the human-readable source files in the public development repository:<\/p>\n\n<ul>\n<li>Repository: https:\/\/github.com\/mtoensing\/marctv-3d-model-embed-block<\/li>\n<li>Block source: <code>src\/<\/code><\/li>\n<li>Build tooling: <code>package.json<\/code><\/li>\n<li>Build command: <code>npm install<\/code> followed by <code>npm run build<\/code><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Upload a <code>.glb<\/code> or <code>.gltf<\/code> file to the media library.<\/li>\n<li>Insert the <code>3D Model Embed Block<\/code> block and select the file.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20file%20formats%20are%20supported%3F\"><h3>Which file formats are supported?<\/h3><\/dt>\n<dd><p>The block supports 3D models in <code>.glb<\/code> and <code>.gltf<\/code>.<\/p><\/dd>\n<dt id=\"can%20i%20enter%20an%20external%20model%20url%3F\"><h3>Can I enter an external model URL?<\/h3><\/dt>\n<dd><p>Yes. Use the block's URL input to insert a <code>.glb<\/code> or <code>.gltf<\/code> file directly.<\/p><\/dd>\n<dt id=\"can%20i%20enable%20zoom%3F\"><h3>Can I enable zoom?<\/h3><\/dt>\n<dd><p>Yes. Turn on <code>Zoom interaction<\/code> in the block sidebar to enable pinch zoom on touch devices and mouse-wheel zoom on desktop.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Add polished WordPress.org icon and banner assets for the public plugin launch.<\/li>\n<li>Use the plugin slug consistently for public PHP, block, script, CSS, and custom-property names.<\/li>\n<li>Document source code and build instructions in the readme.<\/li>\n<\/ul>\n\n<h4>0.4.5<\/h4>\n\n<ul>\n<li>Maintenance release.<\/li>\n<\/ul>\n\n<h4>0.4.4<\/h4>\n\n<ul>\n<li>Add a <code>Zoom interaction<\/code> toggle to enable zoom when needed while keeping the previous default interaction unchanged.<\/li>\n<li>Document optional zoom controls and direct URL insertion in the readme.<\/li>\n<\/ul>\n\n<h4>0.4.3<\/h4>\n\n<ul>\n<li>Add a <code>Framing<\/code> control that adjusts <code>model-viewer<\/code> camera distance via the official <code>camera-orbit<\/code> attribute.<\/li>\n<\/ul>\n\n<h4>0.4.2<\/h4>\n\n<ul>\n<li>Move model selection into the block UI with upload, Media Library, and URL insert flows similar to core media blocks.<\/li>\n<li>Fix block width handling so normal, wide, and full alignment follow WordPress layout standards in the editor and frontend.<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>Hide the default <code>model-viewer<\/code> progress bar via its official <code>progress-bar<\/code> slot instead of styling around it.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Rename the plugin, block, package, and local directory to <code>3D Model Embed Block<\/code>.<\/li>\n<li>Keep the bundled <code>model-viewer<\/code> runtime on a versioned vendor path with documented provenance.<\/li>\n<\/ul>\n\n<h4>0.3.6<\/h4>\n\n<ul>\n<li>Move the bundled <code>model-viewer<\/code> runtime to a versioned vendor path and document its provenance more clearly.<\/li>\n<\/ul>\n\n<h4>0.3.5<\/h4>\n\n<ul>\n<li>Show model load errors in the editor preview only and keep the frontend neutral.<\/li>\n<\/ul>\n\n<h4>0.3.4<\/h4>\n\n<ul>\n<li>Add a clear block-level error message when a model cannot be loaded.<\/li>\n<li>Keep the same feedback visible in the editor preview.<\/li>\n<\/ul>\n\n<h4>0.3.3<\/h4>\n\n<ul>\n<li>Change editor UI strings to English source strings for localization.<\/li>\n<\/ul>\n\n<h4>0.3.2<\/h4>\n\n<ul>\n<li>Move the accepted format hint into the block sidebar.<\/li>\n<li>Keep editor selection simple and limit frontend interaction to the fixed horizontal axis.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Save explicit <code>camera-controls<\/code> and <code>auto-rotate<\/code> attributes so the frontend stays interactive after WordPress sanitization.<\/li>\n<li>Let the block fill its available width more reliably inside groups and aligned layouts in the editor.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Save native block markup instead of relying on editor-side server rendering.<\/li>\n<li>Remove the server-side render architecture and keep the block static.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Move block source to the standard <code>src<\/code> and <code>build<\/code> structure.<\/li>\n<li>Add npm build tooling and GitHub Actions similar to the project standard.<\/li>\n<\/ul>","raw_excerpt":"Show interactive 3D models in WordPress with a simple block for GLB and glTF files, including optional zoom controls.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/298579","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=298579"}],"author":[{"embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/marcdk"}],"wp:attachment":[{"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=298579"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=298579"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=298579"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=298579"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=298579"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=298579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}