{"id":297088,"date":"2026-04-17T07:35:00","date_gmt":"2026-04-17T07:35:00","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/3d-product-customizer\/"},"modified":"2026-05-04T06:44:36","modified_gmt":"2026-05-04T06:44:36","slug":"3d-product-customizer","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/3d-product-customizer\/","author":13166003,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"3.4.2","stable_tag":"3.4.3","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"3D Product Customizer","header_author":"deosebIT Soft","header_description":"Adds powerful 3D customization capabilities to WooCommerce products, including material swapping, geometry toggling, and AR viewing.","assets_banners_color":"525e7c","last_updated":"2026-05-04 06:44:36","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/3d-product-customizer\/","header_author_uri":"https:\/\/deosebitsoft.ro\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":275,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"3.3":{"tag":"3.3","author":"deosebitsoft","date":"2026-04-17 07:37:01"},"3.3.1":{"tag":"3.3.1","author":"deosebitsoft","date":"2026-04-17 07:51:38"},"3.3.2":{"tag":"3.3.2","author":"deosebitsoft","date":"2026-04-17 08:08:05"},"3.3.3":{"tag":"3.3.3","author":"deosebitsoft","date":"2026-04-17 09:03:50"},"3.3.4":{"tag":"3.3.4","author":"deosebitsoft","date":"2026-04-17 14:01:46"},"3.4.0":{"tag":"3.4.0","author":"deosebitsoft","date":"2026-04-20 08:41:41"},"3.4.1":{"tag":"3.4.1","author":"deosebitsoft","date":"2026-04-30 06:20:34"},"3.4.3":{"tag":"3.4.3","author":"deosebitsoft","date":"2026-05-04 06:44:36"}},"upgrade_notice":{"3.4":"<p>Introduced FSE block and material caching in the frontend<\/p>","3.2":"<p>Introduces material preview (premium) and color picker for materials with only a basic color<\/p>","3.0":"<p>Introduces the Free\/Premium tier. Existing installs retain all previously available features. Premium features require a license key activated via 3D Customizer \u2192 Account\/Upgrade.<\/p>","2.1":"<p>Security and stability fixes. Update recommended for all users.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3510736,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3510736,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3510736,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3510736,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3521985,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/\",\"preferredVersions\":{\"php\":\"8.1\",\"wp\":\"latest\"},\"features\":{\"networking\":true},\"phpExtensionBundles\":[\"kitchen-sink\"],\"steps\":[{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/mu-plugins\\\/redirect-to-product.php\",\"data\":\"<?php add_action('template_redirect', function() { if (get_transient('playground_redirected')) return; $products = get_posts(['post_type' => 'product', 'posts_per_page' => 1]); if ($products) { set_transient('playground_redirected', 1); wp_redirect(get_permalink($products[0]->ID)); exit; } });\"},{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"woocommerce\"},\"options\":{\"activate\":true}},{\"step\":\"runPHP\",\"code\":\"<?php require_once 'wordpress\\\/wp-load.php'; update_option('woocommerce_onboarding_profile', ['skipped' => true]); update_option('wc_onboarding_opt_in', 'no'); delete_option('woocommerce_show_marketplace_suggestions'); update_option('woocommerce_admin_install_timestamp', 1); ?>\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"3d-product-customizer\"},\"options\":{\"activate\":true}},{\"step\":\"runPHP\",\"code\":\"<?php require_once 'wordpress\\\/wp-load.php'; $posts = [['Red', '#FF0000'], ['White', '#FFFFFF'], ['Blue', '#0000FF']]; foreach ($posts as [$title, $color]) { $id = wp_insert_post(['post_title' => $title, 'post_type' => 'dprcu_model_texture', 'post_status' => 'publish']); update_post_meta($id, '_dprcu_texture_color', $color); } ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php require_once 'wordpress\\\/wp-load.php'; require_once ABSPATH . 'wp-admin\\\/includes\\\/media.php'; require_once ABSPATH . 'wp-admin\\\/includes\\\/file.php'; require_once ABSPATH . 'wp-admin\\\/includes\\\/image.php'; $url = 'https:\\\/\\\/web-support.eu\\\/customizer\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/chair.glb'; $tmp = download_url($url); $file = array('name' => 'chair.glb', 'tmp_name' => $tmp); $id = media_handle_sideload($file, 0); update_option('_playground_model_id', $id); ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php require_once 'wordpress\\\/wp-load.php'; $model_id = get_option('_playground_model_id'); $model_url = wp_get_attachment_url($model_id); $id = wp_insert_post(['post_title' => 'Edit me!', 'post_type' => 'product', 'post_status' => 'publish', 'post_content' => 'Edit this product in the admin panel to add more steps, materials.']); wp_set_object_terms($id, 'simple', 'product_type'); update_post_meta($id, '_dprcu_3d_model_url', $model_url); update_option('_playground_product_id', $id); ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php require_once 'wordpress\\\/wp-load.php'; $product_id = get_option('_playground_product_id'); $red = get_page_by_title('Red', OBJECT, 'dprcu_model_texture')->ID; $white = get_page_by_title('White', OBJECT, 'dprcu_model_texture')->ID; $blue = get_page_by_title('Blue', OBJECT, 'dprcu_model_texture')->ID; $all = implode(',', [$red, $white, $blue]); $config = ['step1' => ['name' => 'Base', 'description' => '', 'targets' => ['base'], 'options' => ['opt1' => ['name' => 'Materials', 'texture_ids' => $all, 'show' => [], 'hide' => []]]], 'step2' => ['name' => 'Maner', 'description' => '', 'targets' => ['maner'], 'options' => ['opt1' => ['name' => 'Materials', 'texture_ids' => $all, 'show' => [], 'hide' => []]]], 'step3' => ['name' => 'Sezut', 'description' => '', 'targets' => ['sezut'], 'options' => ['opt1' => ['name' => 'Materials', 'texture_ids' => $all, 'show' => [], 'hide' => []]]], 'step4' => ['name' => 'Spate', 'description' => '', 'targets' => ['spate'], 'options' => ['opt1' => ['name' => 'Materials', 'texture_ids' => $all, 'show' => [], 'hide' => []]]]]; update_post_meta($product_id, '_dprcu_customizer_config', wp_json_encode($config)); ?>\"}]}"}},"all_blocks":{"dprcu\/customizer":{"apiVersion":3,"name":"dprcu\/customizer","title":"3D Product Customizer","category":"widgets","icon":"games","description":"Renders the 3D product customizer on WooCommerce product pages.","supports":{"html":false},"textdomain":"3d-product-customizer","editorScript":"file:.\/index.js"}},"tagged_versions":["3.3","3.3.1","3.3.2","3.3.3","3.3.4","3.4.0","3.4.1","3.4.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3508643,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3510608,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3508643,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3510608,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3510608,"resolution":"5","location":"assets","locale":""}},"screenshots":{"1":"Front-end 3D configurator on a WooCommerce product page \u2014 rotate the model and switch materials in real time.","2":"Product metabox in the WordPress admin \u2014 add steps, assign texture options, and target specific meshes.","3":"Texture modal \u2014 browse the reusable texture library and assign materials to a step option.","4":"Model Texture editor \u2014 upload base color and PBR maps (roughness, normal, AO, metalness), set roughness and metalness sliders.","5":"Global Settings page \u2014 configure initial camera position, zoom range, background colors, and HDR environment map."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[783,851,66524,147250,286],"plugin_category":[45],"plugin_contributors":[260425,78154],"plugin_business_model":[],"class_list":["post-297088","plugin","type-plugin","status-publish","hentry","plugin_tags-3d","plugin_tags-configurator","plugin_tags-product-customizer","plugin_tags-three-js","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-deosebitsoft","plugin_contributors-freemius","plugin_committers-deosebitsoft"],"banners":{"banner":"https:\/\/ps.w.org\/3d-product-customizer\/assets\/banner-772x250.png?rev=3510736","banner_2x":"https:\/\/ps.w.org\/3d-product-customizer\/assets\/banner-1544x500.png?rev=3510736","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/3d-product-customizer\/assets\/icon-128x128.png?rev=3510736","icon_2x":"https:\/\/ps.w.org\/3d-product-customizer\/assets\/icon-256x256.png?rev=3510736","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/3d-product-customizer\/assets\/screenshot-1.png?rev=3508643","caption":"Front-end 3D configurator on a WooCommerce product page \u2014 rotate the model and switch materials in real time."},{"src":"https:\/\/ps.w.org\/3d-product-customizer\/assets\/screenshot-2.png?rev=3510608","caption":"Product metabox in the WordPress admin \u2014 add steps, assign texture options, and target specific meshes."},{"src":"https:\/\/ps.w.org\/3d-product-customizer\/assets\/screenshot-3.png?rev=3508643","caption":"Texture modal \u2014 browse the reusable texture library and assign materials to a step option."},{"src":"https:\/\/ps.w.org\/3d-product-customizer\/assets\/screenshot-4.png?rev=3510608","caption":"Model Texture editor \u2014 upload base color and PBR maps (roughness, normal, AO, metalness), set roughness and metalness sliders."},{"src":"https:\/\/ps.w.org\/3d-product-customizer\/assets\/screenshot-5.png?rev=3510608","caption":"Global Settings page \u2014 configure initial camera position, zoom range, background colors, and HDR environment map."}],"raw_content":"<!--section=description-->\n<p><a href=\"https:\/\/web-support.eu\/customizer\/showcase\/?utm_source=wporg&amp;utm_medium=plugin_listing&amp;utm_campaign=demo\">DEMO<\/a><\/p>\n\n<p>Let customers build their perfect product in 3D \u2014 swap materials, hide parts, and share their design. Powered by Three.js, built for WooCommerce.<\/p>\n\n<p><strong>Key features:<\/strong><\/p>\n\n<ul>\n<li>Real-time 3D model viewer powered by Three.js (WebGL)<\/li>\n<li>PBR (Physically Based Rendering) material support \u2014 base color, roughness, normal, AO, metalness, and displacement maps<\/li>\n<li>Per-step customization: define multiple configuration steps (e.g. Upper, Sole, Logo), each targeting specific model meshes<\/li>\n<li>Bulk material assignment in the admin<\/li>\n<li>Geometry visibility toggles \u2014 show or hide mesh groups per option<\/li>\n<li>Undo \/ redo history<\/li>\n<li>URL-based configuration sharing \u2014 customers can share their exact design via a link<\/li>\n<li>Download a PDF preview<\/li>\n<li>AR view on supported mobile devices<\/li>\n<li>HDR environment map for realistic lighting<\/li>\n<li>Background color switcher<\/li>\n<li>Customization data saved to the WooCommerce order as line-item meta<\/li>\n<li>Reusable texture library via a dedicated Custom Post Type<\/li>\n<\/ul>\n\n<p><strong>Free vs Premium:<\/strong><\/p>\n\n<p>The free version is fully functional for single-material customization. Premium unlocks advanced PBR workflows and productivity features for studios managing large product catalogs.<\/p>\n\n<h4>Free<\/h4>\n\n<ul>\n<li>Upload &amp; display a 3D model<\/li>\n<li>Base color texture or color picker per option<\/li>\n<li>Roughness &amp; metalness sliders<\/li>\n<li>Customization steps<\/li>\n<li>Viewer Only Mode<\/li>\n<li>Camera, zoom &amp; background settings<\/li>\n<li>HDR environment map<\/li>\n<li>Undo \/ redo, PDF, AR view<\/li>\n<\/ul>\n\n<h4>Premium (everything in Free, plus)<\/h4>\n\n<ul>\n<li>Material Preview<\/li>\n<li>Multiple textures per option<\/li>\n<li>Bulk Add Materials to a step<\/li>\n<li>Show \/ Hide mesh controls per option<\/li>\n<li>Normal, AO, metalness &amp; displacement maps<\/li>\n<li>Reflection intensity &amp; displacement scale<\/li>\n<li>Hotspots\/Annotations<\/li>\n<\/ul>\n\n<h3>Upgrade to Premium<\/h3>\n\n<ol>\n<li>Inside WordPress admin, go to <strong>3D Customizer \u2192 Account<\/strong> (added after activation).<\/li>\n<li>Click <strong>Upgrade to Premium<\/strong> and complete the purchase on the checkout page.<\/li>\n<li>Return to <strong>3D Customizer \u2192 Account\/Upgrade<\/strong> and enter your license key to activate.<\/li>\n<li>Then in the same page download and activate the Premium version.<\/li>\n<\/ol>\n\n<p>Alternatively, click the <strong>Upgrade to Premium<\/strong> button that appears inside any locked premium feature panel.<\/p>\n\n<h3>Source Code &amp; Build Instructions<\/h3>\n\n<p><strong>All source code is human-readable and included in this plugin.<\/strong><\/p>\n\n<p>The <code>\/js\/<\/code> folder contains the original, uncompiled JavaScript source files:\n* <code>customizer.js<\/code> \u2014 Main 3D configurator frontend logic\n* <code>model-scanner.js<\/code> \u2014 3D model mesh detection and analysis\n* <code>material-preview.js<\/code> \u2014 Material preview rendering\n* <code>ui.js<\/code> \u2014 UI state management and interactions\n* Admin scripts in <code>\/admin\/js\/<\/code> \u2014 Dashboard-specific functionality<\/p>\n\n<p>The <code>\/dist\/<\/code> folder contains pre-compiled, production-ready bundles. These are generated by bundling the source files with their dependencies (three.js, pdf-lib, lucide) using Webpack. <strong>The <code>\/dist\/<\/code> folder is auto-generated output and not part of the source code.<\/strong><\/p>\n\n<p><strong>Rebuilding from Source:<\/strong><\/p>\n\n<p>This plugin uses Webpack to compile and minify JavaScript, bundling dependencies to keep the plugin size manageable (avoiding the need to distribute <code>node_modules<\/code>).<\/p>\n\n<p>Requirements:\n* Node.js (v14 or newer)\n* npm (included with Node.js)<\/p>\n\n<p>Build commands:\n    <code>npm install              # Install dependencies from package.json\nnpm run dev             # Development build with watch mode (rebuilds on file changes)\nnpm run build           # Production build (minified and optimized)<\/code><\/p>\n\n<p><strong>Dependencies:<\/strong>\n* <strong>three.js<\/strong> \u2014 WebGL 3D rendering library (licensed under MIT)\n* <strong>pdf-lib<\/strong> \u2014 PDF generation for preview downloads (licensed under Apache 2.0)\n* <strong>lucide<\/strong> \u2014 Icon library (licensed under MIT)\n* <strong>webpack<\/strong> \u2014 Module bundler (licensed under MIT)<\/p>\n\n<p>All original code is GPLv2 or later. Third-party dependencies follow their respective open-source licenses, listed in <code>package.json<\/code>.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin integrates with <strong>Freemius<\/strong> for license management, automatic updates, and premium feature delivery:<\/p>\n\n<ul>\n<li><strong>Service:<\/strong> Freemius License Management<\/li>\n<li><strong>Server:<\/strong> https:\/\/freemius.com<\/li>\n<li><strong>Purpose:<\/strong> Validates premium licenses, manages plugin updates, delivers premium features, and provides usage analytics<\/li>\n<li><strong>Data Sent:<\/strong> Plugin activation events, license key validation, and anonymized usage analytics<\/li>\n<li><strong>Account Required:<\/strong> Optional \u2014 only if upgrading to Premium<\/li>\n<li><strong>Terms:<\/strong> https:\/\/freemius.com\/terms\/<\/li>\n<\/ul>\n\n<p>All other assets (JavaScript, CSS, images) are included locally within the plugin package. No other external services are used.<\/p>\n\n<h3>Authors &amp; Credits<\/h3>\n\n<p><strong>Development<\/strong>: <a href=\"https:\/\/deosebitsoft.ro\/\">deosebIT Soft<\/a><\/p>\n\n<p>This plugin was developed with attention to WordPress.org standards and is maintained by the deosebIT Soft team. For support, updates, and premium features, visit our website.<\/p>\n\n<h3>Display Methods &amp; Hooks<\/h3>\n\n<p>The 3D Customizer provides three flexible ways to display the customizer on your product pages:<\/p>\n\n<p><strong>1. Automatic Display (Default)<\/strong>\nThe customizer is automatically displayed before the product summary.<\/p>\n\n<p><strong>Setting:<\/strong> 3D Customizer \u2192 Global Settings \u2192 Display Method \u2192 \"Automatic (before product summary)\"<\/p>\n\n<p>No code required \u2014 it just works!<\/p>\n\n<p><strong>2. Shortcode Display<\/strong>\nDisplay the customizer anywhere using the <code>[dprcu-customizer]<\/code> shortcode.<\/p>\n\n<p><strong>Setting:<\/strong> 3D Customizer \u2192 Global Settings \u2192 Display Method \u2192 \"Shortcode Only\"<\/p>\n\n<p>Usage:\n    <code>[dprcu-customizer]<\/code><\/p>\n\n<p>Perfect for custom layouts and page builders (Elementor, Divi, etc.)<\/p>\n\n<p><strong>3. Manual Hook Display<\/strong>\nDisplay the customizer using the <code>dprcu_display_customizer<\/code> action hook.<\/p>\n\n<p><strong>Setting:<\/strong> 3D Customizer \u2192 Global Settings \u2192 Display Method \u2192 \"Manual Hook (do_action)\"<\/p>\n\n<p>Usage in your theme template:\n    <code>php\n&lt;?php do_action( 'dprcu_display_customizer' ); ?&gt;<\/code><\/p>\n\n<p><strong>Developer Hooks<\/strong><\/p>\n\n<p>The plugin provides 18+ action hooks for extending functionality. Common hooks include:<\/p>\n\n<ul>\n<li><code>dprcu_before_customizer_output<\/code> \u2014 Before the customizer renders<\/li>\n<li><code>dprcu_before_canvas_container<\/code> \u2014 Before the 3D canvas<\/li>\n<li><code>dprcu_before_sidebar_container<\/code> \u2014 Before the sidebar<\/li>\n<li><code>dprcu_display_customizer<\/code> \u2014 Manual display hook (see Display Methods above)<\/li>\n<\/ul>\n\n<p>For the complete list of hooks, see the <a href=\"https:\/\/web-support.eu\/customizer\/documentation\/#hooks\">Documentation<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>product-customizer<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Ensure WooCommerce is installed and active.<\/li>\n<li>Navigate to <strong>Model Textures<\/strong> in the WordPress admin and create texture entries. Each texture can include a base-color image (featured image) plus optional PBR maps and scalar material properties.<\/li>\n<li>Open any WooCommerce product and locate the <strong>3D Configurator<\/strong> metabox.<\/li>\n<li>Upload or select a <code>.glb<\/code> \/ <code>.gltf<\/code> model using the <strong>Select Model<\/strong> button.<\/li>\n<li>Click <strong>Scan Model<\/strong> to auto-detect mesh names from the file.<\/li>\n<li>Add one or more <strong>Steps<\/strong> and assign <strong>Options<\/strong> (textures or geometry toggles) to each step.<\/li>\n<li>Save the product. The 3D configurator will now appear on the product's front-end page.<\/li>\n<li>Visit <strong>Model Textures \u2192 Global Settings<\/strong> to configure camera position, zoom limits, background colors, and an optional HDR environment map.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%203d%20file%20formats%20are%20supported%3F\"><h3>What 3D file formats are supported?<\/h3><\/dt>\n<dd><p>GLB (binary GLTF) is the recommended format. GLTF (JSON-based) is also supported. The plugin registers these MIME types with WordPress so they can be uploaded through the standard Media Library.<\/p><\/dd>\n<dt id=\"can%20i%20use%20multiple%20hdr%20environment%20maps%20per%20product%3F\"><h3>Can I use multiple HDR environment maps per product?<\/h3><\/dt>\n<dd><p>The HDR environment map is a global setting. All products share the same HDR file. Per-product HDR support is planned for a future release.<\/p><\/dd>\n<dt id=\"why%20does%20the%203d%20viewer%20not%20appear%20on%20a%20product%20page%3F\"><h3>Why does the 3D viewer not appear on a product page?<\/h3><\/dt>\n<dd><p>The configurator only renders when the product has a valid <code>.glb<\/code> model URL AND at least one configured step with at least one option. Check the <strong>3D Configurator<\/strong> metabox on the product.<\/p><\/dd>\n<dt id=\"how%20is%20the%20customization%20saved%20to%20the%20order%3F\"><h3>How is the customization saved to the order?<\/h3><\/dt>\n<dd><p>When a customer clicks <strong>Add to cart<\/strong>, the current configuration is sent as a JSON payload. Each selected option (part \u2192 material name) is stored as a WooCommerce line-item meta entry and is visible on the order detail and in emails.<\/p><\/dd>\n<dt id=\"is%20this%20compatible%20with%20woocommerce%20variable%20products%3F\"><h3>Is this compatible with WooCommerce variable products?<\/h3><\/dt>\n<dd><p>The plugin targets simple products. Variable product support is not officially tested.<\/p><\/dd>\n<dt id=\"are%20the%20bundled%20javascript%20files%20minified%3F\"><h3>Are the bundled JavaScript files minified?<\/h3><\/dt>\n<dd><p>Yes. The source files are included in the <code>js\/<\/code> directory and the <code>webpack.config.js<\/code> build configuration is included in the plugin package.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.4.2<\/h4>\n\n<p>Added FSE block to bypass content wrapping.<\/p>\n\n<h4>3.4.1<\/h4>\n\n<p>Improved asset caching<\/p>\n\n<h4>3.4.0<\/h4>\n\n<ul>\n<li>Added three display methods (Automatic, Shortcode, Manual Hook) for flexible customizer placement<\/li>\n<li>Implemented 18+ WordPress action hooks for developer extensibility<\/li>\n<li>Fixed wpautop filter interfering with shortcode output<\/li>\n<li>Added Global Settings page with display method selection<\/li>\n<\/ul>\n\n<h4>3.3<\/h4>\n\n<ul>\n<li>Fixed premium notice css <\/li>\n<li>Added auto framing to the customizer<\/li>\n<li>Updated admin model scanner layout<\/li>\n<\/ul>\n\n<h4>3.2<\/h4>\n\n<ul>\n<li>Introduced Material preview metabox for Premium<\/li>\n<li>Introduced color picker for materials with only basic colors<\/li>\n<\/ul>\n\n<h4>3.0<\/h4>\n\n<ul>\n<li>Introduced Free vs Premium tier via Freemius licensing.<\/li>\n<li>Premium: multiple textures per option (free tier limited to one per option).<\/li>\n<li>Premium: Bulk Add Materials button in the product metabox.<\/li>\n<li>Premium: Show\/Hide mesh controls per customization option.<\/li>\n<li>Premium: full PBR map set \u2014 normal, AO, metalness, and displacement map uploads.<\/li>\n<li>Premium: reflection intensity and displacement scale sliders on texture entries.<\/li>\n<li>Added custom isometric cube icon in the WordPress admin sidebar.<\/li>\n<li>Added persistent upgrade prompts comparing free and premium features.<\/li>\n<li>Freemius account menu integrated into the 3D Customizer admin menu.<\/li>\n<\/ul>\n\n<h4>2.1<\/h4>\n\n<ul>\n<li>Added glass\/transmission material support.<\/li>\n<li>Added bulk material assignment in the product metabox.<\/li>\n<li>Added drag-to-reorder for steps and options.<\/li>\n<li>Added geometry visibility (show\/hide meshes) per option.<\/li>\n<li>Improved undo\/redo history system.<\/li>\n<li>Performance: texture list now cached with a transient.<\/li>\n<li>Security: fixed text domain inconsistency across all files.<\/li>\n<li>Security: attachment IDs now sanitized with absint() instead of sanitize_text_field().<\/li>\n<li>Security: ABSPATH guard moved to top of plugin-settings.php.<\/li>\n<li>Security: all HTML attribute echoes in settings render callbacks now escaped with esc_attr().<\/li>\n<\/ul>\n\n<h4>2.0<\/h4>\n\n<ul>\n<li>Multi-texture options: assign multiple textures to a single option card.<\/li>\n<li>New step\/option data structure with explicit target meshes.<\/li>\n<li>Added HDR environment map setting.<\/li>\n<li>Added URL-based configuration sharing.<\/li>\n<li>Added AR export with QR code.<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"An interactive Three.js-powered 3D product configurator for WooCommerce \u2014 let customers customize materials, textures, and geometry in real time.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/297088","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=297088"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/deosebitsoft"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=297088"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=297088"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=297088"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=297088"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=297088"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=297088"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}