Skip to content

Latest commit

 

History

History
174 lines (144 loc) · 49.1 KB

File metadata and controls

174 lines (144 loc) · 49.1 KB
sidebar_position 11
title Tutorial: Creating a Parametric Palm Table Configurator for Shopify
sidebar_label Product - Palm Table
description Learn to build an advanced 3D palm table configurator for Shopify, combining 3D scans, parametric CAD models, product variants, and custom Liquid UI elements with "3D Bits".
tags
shopify
3d-bits

import BitByBitRenderCanvas from '@site/src/components/BitByBitRenderCanvas'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';

Tutorial: Creating a Parametric Palm Table Configurator for Shopify

What You Will Learn: Advanced 3D Configuration

This tutorial takes you a step further, demonstrating how more complex Bitbybit scripts can be integrated into your Shopify store using the "3D Bits" app. We will use a pre-prepared parametric palm table script and show you how to:

  • Integrate it into your Shopify product page.
  • Combine 3D scans with parametric 3D CAD models.
  • Link script parameters to Shopify product variants.
  • Create and use custom Liquid UI elements (as line item properties) for more granular product configuration.

View the Demo:

A screenshot of the 3D parametric palm table model as it appears in the Shopify store. 3D Palm Table Configurator Example

Video Tutorial: Building the Palm Table Configurator

<iframe width="560" height="315" src="https://www.youtube.com/embed/dkOMbsQ10PI?si=ZZON7IZLSeYY2CXf" title="Building a Parametric 3D Palm Table Configurator for Shopify Tutorial" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen> </iframe>

Key Concepts Covered

Setting Up Product Variants

Shopify variants allow you to offer different versions of a product (e.g., different sizes, colors, materials). Each variant can have its own price, SKU, and inventory. In this tutorial, we'll use variants to control aspects like the number of legs for the table and potentially assign custom pricing based on these selections.

Custom Liquid UI Elements for Line Item Properties

While variants are great, sometimes you need finer control over product configuration. Custom Liquid UI elements, implemented as line item properties, allow you to add sliders, dropdowns, checkboxes, and other custom inputs to your product page. Customers can use these to configure product details that might not be covered by standard variants.

Important Note on Pricing with Line Items: Line item properties in Shopify cannot directly affect the product's base price. If you need custom UI elements that dynamically change the price, you would typically need to use a third-party Shopify app designed for complex pricing rules and attempt to integrate the "3D Bits" app with it. We cannot guarantee compatibility, but as long as the inputs generated by such apps have name attributes, our app should be able to pick up their values.

How to Create a Custom Liquid Form for Line Items

  1. Create a Metafield for Liquid Code:

    • You'll need a product metafield to store your custom Liquid code. You can name the metafield descriptively (e.g., "Custom Product Options").
    • The key for this metafield must be custom.liquid-custom-line-items. The video tutorial explains how to set this up.
  2. Liquid Snippets: You'll typically use two Liquid snippets:

    • Snippet 1: Context and Form Identification (Add to your theme's product form Liquid file, e.g., main-product.liquid or a custom section): This snippet sets up the context and helps identify the product form for our app. (The exact implementation of this "magic" might vary or be handled by the "3D Bits" app's block itself. The video tutorial will provide the precise method.)
{% assign product_form_id = 'product-form-' | append: section.id %}
{% assign replaced = product.metafields.custom.liquid-custom-line-items | replace: "{{product_form_id}}", product_form_id %}
{{replaced}}
*   **Snippet 2: The Form Itself (Paste into the `custom.liquid-custom-line-items` product metafield):**
    This snippet defines the actual HTML for your custom UI elements. Here's a conceptual example for controlling table dimensions:

```html
<style>
    label {
        margin-top: 20px;
    }
    input {
        width: 100%;
        max-width: 440px;
    }
    input[type='text'] {
        height: 40px;
        padding: 20px;
        -webkit-user-select: text;
    }
    ::selection {
        background-color: #ffffff;
        color: #000000;
    }
    input[type='range'] {
        margin: 0px;
        appearance: none;
        background-color: #000000;
        color: #000000;
        height: 2px;
        border-radius: 0.5vmin;
    }
    input::-webkit-slider-thumb {
        cursor: pointer;
        appearance: none;
        width: 1vmin;
        height: 1vmin;
        background: black;
    }
</style>

<p class="line-item-property__field">
<label class="form__label" id="height-range-label" for="height-range">Height</label>
<input
    id="height-range"
    form="{{product_form_id}}"
    name="properties[Height]"
    type="range"
    min="0.1"
    max="1.5"
    value="1"
    step="0.1"
    class="slider"
/>
<label class="form__label" id="leg-thickness-range-label" for="leg-thickness-range">Leg Thickness</label>
<input
    id="leg-thickness-range"
    form="{{product_form_id}}"
    name="properties[Leg Thickness]"
    type="range"
    min="0.1"
    max="0.4"
    value="0.2"
    step="0.05"
    class="slider"
/>
</p>
<script>
    setTimeout(() => {
        setupUpdates('height-range', 'Height: ');
        setupUpdates('leg-thickness-range', 'Leg Thickness: ');
    });

    function setupUpdates(id, label){
        const value = document.querySelector(`#${id}-label`);
        const input = document.querySelector(`#${id}`);
        value.textContent = label + input.value;
        input.addEventListener('change', (event) => {
            value.textContent = label + event.target.value;
        });
    }
</script>
```

The Bitbybit Script (Rete)

To save you time, here is the embedded Rete script used in this tutorial for the parametric palm table. You can explore it here and then use the "Export to Runner" feature in the Bitbybit editor to get the JavaScript code for your Shopify BITBYBIT RUNNER block.

<BitByBitRenderCanvas requireManualStart={true} script={{"script":"{"id":"rete-v2-json","nodes":{"31837c43efb7c836":{"id":"31837c43efb7c836","name":"bitbybit.occt.shapes.wire.interpolatePoints","customName":"interpolate","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"periodic":true,"tolerance":1e-7},"inputs":{"points":{"connections":[{"node":"a70860061600161b","output":"list","data":{}}]}},"position":[-1593.7776113512678,253.2915455643589]},"7062a429128bbbda":{"id":"7062a429128bbbda","name":"bitbybit.occt.shapes.wire.interpolatePoints","customName":"interpolate","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"periodic":true,"tolerance":1e-7},"inputs":{"points":{"connections":[{"node":"b51edd3cfa39f8fc","output":"list","data":{}}]}},"position":[-1185.8133115671612,579.5999499926052]},"6a1a83648fcec1c3":{"id":"6a1a83648fcec1c3","name":"bitbybit.babylon.scene.drawDirectionalLight","customName":"directional light","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false},"direction":[-100,-100,-100],"intensity":2,"diffuse":"#2e58ff","specular":"#ffffff","shadowGeneratorMapSize":4000,"enableShadows":true,"shadowDarkness":0,"shadowUsePercentageCloserFiltering":true,"shadowContactHardeningLightSizeUVRatio":0.2,"shadowBias":0.0001,"shadowNormalBias":0.002,"shadowMaxZ":1000,"shadowMinZ":0},"inputs":{},"position":[2092.6072846964635,795.1080497935234]},"29413c06018aa432":{"id":"29413c06018aa432","name":"bitbybit.occt.shapes.wire.reversedWire","customName":"reversed","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false}},"inputs":{"shape":{"connections":[{"node":"aac363f7d7b0d8c5","output":"result","data":{}}]}},"position":[7551.793538509435,-130.72768372770645]},"1f0078851cb91cab":{"id":"1f0078851cb91cab","name":"bitbybit.occt.shapes.face.createFaceFromWires","customName":"face from wires","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"planar":true},"inputs":{"shapes":{"connections":[{"node":"2f9c392ce2d6b979","output":"result","data":{}}]}},"position":[9034.803885634217,-413.0281787163233]},"e0419a05fe8e64c7":{"id":"e0419a05fe8e64c7","name":"bitbybit.lists.createList","customName":"create list","data":{},"inputs":{"listElements":{"connections":[{"node":"34cb18f6e31ecbbc","output":"list","data":{}},{"node":"aa72fd1f6e8121b5","output":"list","data":{}}]}},"position":[8326.289547872313,-352.91919602436724]},"2f9c392ce2d6b979":{"id":"2f9c392ce2d6b979","name":"bitbybit.lists.flipLists","customName":"flip lists","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":1,"forceExecution":false},"clone":true},"inputs":{"list":{"connections":[{"node":"e0419a05fe8e64c7","output":"list","data":{}}]}},"position":[8666.790633357406,-400.68348899578194]},"aa72fd1f6e8121b5":{"id":"aa72fd1f6e8121b5","name":"bitbybit.lists.createList","customName":"create list","data":{},"inputs":{"listElements":{"connections":[{"node":"29413c06018aa432","output":"result","data":{}}]}},"position":[7941.746116134559,-123.41999711044451]},"e0aaf1341ecc66d4":{"id":"e0aaf1341ecc66d4","name":"bitbybit.occt.shapes.wire.divideWireByEqualDistanceToPoints","customName":"points by distance","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"nrOfDivisions":10,"removeStartPoint":false,"removeEndPoint":true},"inputs":{"shape":{"connections":[{"node":"31837c43efb7c836","output":"result","data":{}}]},"nrOfDivisions":{"connections":[{"node":"149339a9019fcd93","output":"result","data":{}}]}},"position":[-637.8723204165638,-132.43958949213663]},"d0e10b585b8951f6":{"id":"d0e10b585b8951f6","name":"bitbybit.occt.shapes.wire.divideWireByEqualDistanceToPoints","customName":"points by distance","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"nrOfDivisions":10,"removeStartPoint":false,"removeEndPoint":true},"inputs":{"shape":{"connections":[{"node":"7062a429128bbbda","output":"result","data":{}}]},"nrOfDivisions":{"connections":[{"node":"149339a9019fcd93","output":"result","data":{}}]}},"position":[-654.2587613672749,328.84442164361764]},"ca2e8b84a5142533":{"id":"ca2e8b84a5142533","name":"bitbybit.lists.createList","customName":"create list","data":{},"inputs":{"listElements":{"connections":[{"node":"eff8d987165307b6","output":"list","data":{}},{"node":"e0aaf1341ecc66d4","output":"result","data":{}},{"node":"d0e10b585b8951f6","output":"result","data":{}},{"node":"8d542d9159ccbc16","output":"list","data":{}}]}},"position":[5506.96937644226,-497.0650606049488]},"df30296fdfaee3e5":{"id":"df30296fdfaee3e5","name":"bitbybit.lists.flipLists","customName":"flip lists","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":1,"forceExecution":false},"clone":true},"inputs":{"list":{"connections":[{"node":"ca2e8b84a5142533","output":"list","data":{}}]}},"position":[5836.0056398228235,-474.74874869309394]},"6805de2fe91353b5":{"id":"6805de2fe91353b5","name":"bitbybit.occt.shapes.wire.createPolygonWire","customName":"polygon","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false}},"inputs":{"points":{"connections":[{"node":"df30296fdfaee3e5","output":"result","data":{}}]}},"position":[6234.471739129379,-447.28540345269926]},"18110ee4725a9a45":{"id":"18110ee4725a9a45","name":"bitbybit.lists.createList","customName":"create list","data":{},"inputs":{"listElements":{"connections":[{"node":"d0e10b585b8951f6","output":"result","data":{}},{"node":"eff8d987165307b6","output":"list","data":{}}]}},"position":[2316.8535255340144,-91.11856333942043]},"80241bbb86d474c9":{"id":"80241bbb86d474c9","name":"bitbybit.lists.flipLists","customName":"flip lists","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":1,"forceExecution":false},"clone":true},"inputs":{"list":{"connections":[{"node":"18110ee4725a9a45","output":"list","data":{}}]}},"position":[2685.0146558579254,73.29352462936126]},"d67b70bead711b5c":{"id":"d67b70bead711b5c","name":"bitbybit.lists.addItemAtIndex","customName":"add item","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false},"index":1,"clone":true},"inputs":{"item":{"connections":[{"node":"dc518580e3c246e1","output":"result","data":{}}]},"list":{"connections":[{"node":"353793a2747f5024","output":"result","data":{}}]}},"position":[917.5232148681898,-623.0236044635359]},"dc518580e3c246e1":{"id":"dc518580e3c246e1","name":"bitbybit.math.number","customName":"number","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false},"number":0},"inputs":{},"position":[437.9114505526686,-311.9722167448897]},"40f70be758f5a235":{"id":"40f70be758f5a235","name":"bitbybit.lists.passThrough","customName":"pass through","data":{},"inputs":{"item":{"connections":[{"node":"d67b70bead711b5c","output":"result","data":{}}]}},"position":[1330.2747597784746,-597.7199493604561]},"c9685df3943837f6":{"id":"c9685df3943837f6","name":"bitbybit.lists.removeItemAtIndex","customName":"remove item","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false},"index":2,"clone":true},"inputs":{"list":{"connections":[{"node":"40f70be758f5a235","output":"item","data":{}}]}},"position":[1625.897902712436,-672.4470822874287]},"eff8d987165307b6":{"id":"eff8d987165307b6","name":"bitbybit.lists.createList","customName":"create list","data":{},"inputs":{"listElements":{"connections":[{"node":"c9685df3943837f6","output":"result","data":{}}]}},"position":[2017.0837107167417,-557.6884465021725]},"73e24c87db754344":{"id":"73e24c87db754344","name":"bitbybit.occt.operations.offset","customName":"offset","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":true,"flatten":0,"forceExecution":false},"distance":0.2,"tolerance":0.1},"inputs":{"shape":{"connections":[{"node":"6805de2fe91353b5","output":"result","data":{}}]},"face":{"connections":[{"node":"e8e247ab73390a97","output":"result","data":{}}]},"distance":{"connections":[{"node":"c73eaf8cb35cb484","output":"result","data":{}}]}},"position":[7229.5438787190615,-701.5207348868968]},"aac363f7d7b0d8c5":{"id":"aac363f7d7b0d8c5","name":"bitbybit.occt.operations.offset","customName":"offset","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":true,"flatten":0,"forceExecution":false},"distance":0.05,"tolerance":0.1},"inputs":{"shape":{"connections":[{"node":"6805de2fe91353b5","output":"result","data":{}}]},"face":{"connections":[{"node":"e8e247ab73390a97","output":"result","data":{}}]}},"position":[7215.494481762919,-114.08034575053713]},"e8e247ab73390a97":{"id":"e8e247ab73390a97","name":"bitbybit.occt.shapes.face.createFaceFromWire","customName":"face from wire","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"planar":true},"inputs":{"shape":{"connections":[{"node":"6805de2fe91353b5","output":"result","data":{}}]}},"position":[6691.511851141748,-504.13957383343063]},"34cb18f6e31ecbbc":{"id":"34cb18f6e31ecbbc","name":"bitbybit.lists.createList","customName":"create list","data":{},"inputs":{"listElements":{"connections":[{"node":"73e24c87db754344","output":"result","data":{}}]}},"position":[7583.946364016251,-666.6864199918559]},"4f6bf108066fede3":{"id":"4f6bf108066fede3","name":"bitbybit.occt.operations.makeThickSolidSimple","customName":"thicken","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"offset":0.05},"inputs":{"shape":{"connections":[{"node":"1f0078851cb91cab","output":"result","data":{}}]}},"position":[9592.064111354663,-528.943149090781]},"cf1b282b54900559":{"id":"cf1b282b54900559","name":"bitbybit.occt.fillets.chamferEdges","customName":"chamfer edges","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"distance":0.02},"inputs":{"shape":{"connections":[{"node":"4f6bf108066fede3","output":"result","data":{}},{"node":"f94b23403634688d","output":"result","data":{}}]}},"position":[9987.752536709344,-392.21004729857964]},"ba7a40ecbe3da221":{"id":"ba7a40ecbe3da221","name":"bitbybit.draw.drawAnyAsync","customName":"draw async","async":true,"drawable":true,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false}},"inputs":{"options":{"connections":[{"node":"1697279b3848816e","output":"result","data":{}}]},"entity":{"connections":[{"node":"1a74caf6af606f8c","output":"result","data":{}},{"node":"86142d7043ff6d8e","output":"result","data":{}}]}},"position":[11123.12325858764,-411.89939781049566]},"1697279b3848816e":{"id":"1697279b3848816e","name":"bitbybit.draw.optionsOcctShapeMaterial","customName":"occt shape with material","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false},"precision":0.02,"drawEdges":false,"edgeColour":"#ffffff","edgeWidth":2},"inputs":{"faceMaterial":{"connections":[{"node":"f56f9a92f89b426f","output":"result","data":{}}]}},"position":[10595.357895082569,-143.89850045847834]},"f56f9a92f89b426f":{"id":"f56f9a92f89b426f","name":"bitbybit.babylon.material.pbrMetallicRoughness.create","customName":"pbr material","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false},"name":"Custom Material","baseColor":"#000000","emissiveColor":"#000000","metallic":0.9,"roughness":0.24,"alpha":1,"backFaceCulling":false,"zOffset":0},"inputs":{},"position":[10225.046590903792,9.156540865799798]},"1a74caf6af606f8c":{"id":"1a74caf6af606f8c","name":"bitbybit.occt.shapes.compound.makeCompound","customName":"make","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false}},"inputs":{"shapes":{"connections":[{"node":"c2217718756f16d4","output":"list","data":{}}]}},"position":[10739.49858803467,-411.96645101338845]},"c2217718756f16d4":{"id":"c2217718756f16d4","name":"bitbybit.lists.createList","customName":"create list","data":{},"inputs":{"listElements":{"connections":[{"node":"cf1b282b54900559","output":"result","data":{}}]}},"position":[10422.32816799044,-366.5749066241308]},"8bce50eeb08aee2a":{"id":"8bce50eeb08aee2a","name":"bitbybit.occt.shapes.face.normalOnUV","customName":"normal on uv","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"paramU":0.5,"paramV":0.5},"inputs":{"shape":{"connections":[{"node":"e8e247ab73390a97","output":"result","data":{}}]}},"position":[7185.858317782559,-1071.0089788710666]},"353793a2747f5024":{"id":"353793a2747f5024","name":"bitbybit.lists.flatten","customName":"flatten","data":{"nrLevels":1},"inputs":{"list":{"connections":[{"node":"e0aaf1341ecc66d4","output":"result","data":{}}]}},"position":[-85.25070600002573,-232.44378016688665]},"2eaf39ab89fabcf7":{"id":"2eaf39ab89fabcf7","name":"bitbybit.occt.shapes.wire.createPolylineWire","customName":"polyline","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false}},"inputs":{"points":{"connections":[{"node":"80241bbb86d474c9","output":"result","data":{}}]}},"position":[3023.505231579869,78.53751425944878]},"414499d00fddaff3":{"id":"414499d00fddaff3","name":"bitbybit.occt.shapes.wire.pointOnWireAtParam","customName":"point at param","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"param":0.7},"inputs":{"shape":{"connections":[{"node":"2eaf39ab89fabcf7","output":"result","data":{}}]}},"position":[3380.7815318657913,64.783297190383]},"1ed41fcc3663ff42":{"id":"1ed41fcc3663ff42","name":"bitbybit.lists.addItemAtIndex","customName":"add item","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false},"index":1,"clone":true},"inputs":{"list":{"connections":[{"node":"fb79bba15e16a06f","output":"item","data":{}}]},"item":{"connections":[{"node":"dc518580e3c246e1","output":"result","data":{}}]}},"position":[4136.042395357145,-151.4957597053613]},"fb79bba15e16a06f":{"id":"fb79bba15e16a06f","name":"bitbybit.lists.passThrough","customName":"pass through","data":{},"inputs":{"item":{"connections":[{"node":"414499d00fddaff3","output":"result","data":{}}]}},"position":[3825.9622392500323,-129.7988820383694]},"7358bb07bad704fc":{"id":"7358bb07bad704fc","name":"bitbybit.lists.passThrough","customName":"pass through","data":{},"inputs":{"item":{"connections":[{"node":"1ed41fcc3663ff42","output":"result","data":{}}]}},"position":[4502.713709691637,-175.64308007610293]},"a6f24203a6359557":{"id":"a6f24203a6359557","name":"bitbybit.lists.removeItemAtIndex","customName":"remove item","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false},"index":2,"clone":true},"inputs":{"list":{"connections":[{"node":"7358bb07bad704fc","output":"item","data":{}}]}},"position":[4803.83887911686,-239.45978049655076]},"8d542d9159ccbc16":{"id":"8d542d9159ccbc16","name":"bitbybit.lists.createList","customName":"create list","data":{},"inputs":{"listElements":{"connections":[{"node":"a6f24203a6359557","output":"result","data":{}}]}},"position":[5189.262585056546,-210.96342850815395]},"9758a707c31da08e":{"id":"9758a707c31da08e","name":"bitbybit.draw.drawAnyAsync","customName":"draw async","async":true,"drawable":true,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false}},"inputs":{"options":{"connections":[{"node":"e77ff54b9e661ca2","output":"result","data":{}}]},"entity":{"connections":[{"node":"55adf97796d98f99","output":"result","data":{}}]}},"position":[7384.110253521927,2432.003012760463]},"e77ff54b9e661ca2":{"id":"e77ff54b9e661ca2","name":"bitbybit.draw.optionsOcctShapeSimple","customName":"occt shape simple","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false},"precision":0.01,"drawFaces":true,"faceColour":"#3b3b3b","drawEdges":false,"edgeColour":"#ffffff","edgeWidth":2},"inputs":{},"position":[6735.825312941648,2698.646873905299]},"f94b23403634688d":{"id":"f94b23403634688d","name":"bitbybit.occt.operations.makeThickSolidSimple","customName":"thicken","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"offset":-0.05},"inputs":{"shape":{"connections":[{"node":"1f0078851cb91cab","output":"result","data":{}}]}},"position":[9604.27046451454,-225.14058367024086]},"9d06ef5e24369305":{"id":"9d06ef5e24369305","name":"bitbybit.occt.shapes.edge.getEdge","customName":"get edge","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"index":3},"inputs":{"shape":{"connections":[{"node":"1326e004fd6a310e","output":"result","data":{}}]}},"position":[8108.693978539097,-1526.8456962470411]},"703cc6b980dc22a1":{"id":"703cc6b980dc22a1","name":"bitbybit.occt.operations.loftAdvanced","customName":"loft adv.","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"makeSolid":false,"closed":true,"periodic":true,"straight":true,"nrPeriodicSections":10,"useSmoothing":false,"maxUDegree":3,"tolerance":0.001,"parType":"approxCentripetal"},"inputs":{"shapes":{"connections":[{"node":"98577301857a6189","output":"list","data":{}}]}},"position":[10088.849642605684,-1955.0927494499335]},"1326e004fd6a310e":{"id":"1326e004fd6a310e","name":"bitbybit.occt.operations.offset","customName":"offset","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"distance":0.22,"tolerance":0.1},"inputs":{"shape":{"connections":[{"node":"6805de2fe91353b5","output":"result","data":{}}]},"distance":{"connections":[{"node":"c73eaf8cb35cb484","output":"result","data":{}}]}},"position":[7421.752650249176,-1533.771344993055]},"98577301857a6189":{"id":"98577301857a6189","name":"bitbybit.lists.createList","customName":"create list","data":{},"inputs":{"listElements":{"connections":[{"node":"087b35978a1e6653","output":"result","data":{}}]}},"position":[9788.883817447857,-1902.945051512794]},"34e1abf8b93ca0ac":{"id":"34e1abf8b93ca0ac","name":"bitbybit.draw.drawAnyAsync","customName":"draw async","async":true,"drawable":true,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false}},"inputs":{"entity":{"connections":[{"node":"1bad109c556ac293","output":"result","data":{}}]},"options":{"connections":[{"node":"09d26f6e41a58c43","output":"result","data":{}}]}},"position":[10860.21013696698,-1901.7839797477645]},"1bad109c556ac293":{"id":"1bad109c556ac293","name":"bitbybit.occt.operations.makeThickSolidSimple","customName":"thicken","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"offset":0.05},"inputs":{"shape":{"connections":[{"node":"703cc6b980dc22a1","output":"result","data":{}}]}},"position":[10430.321933779813,-1966.1238574042284]},"09d26f6e41a58c43":{"id":"09d26f6e41a58c43","name":"bitbybit.draw.optionsOcctShape","customName":"occt shape","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false},"faceOpacity":0,"edgeOpacity":1,"edgeColour":"#000000","faceColour":"#2e2e2e","vertexColour":"#ff00ff","edgeWidth":1,"vertexSize":0.03,"drawEdges":true,"drawFaces":true,"drawVertices":false,"precision":0.02,"drawEdgeIndexes":false,"edgeIndexHeight":0.06,"edgeIndexColour":"#ff00ff","drawFaceIndexes":false,"faceIndexHeight":0.06,"faceIndexColour":"#0000ff"},"inputs":{},"position":[10420.127097016677,-1670.3706727683414]},"32fc443558202a83":{"id":"32fc443558202a83","name":"bitbybit.occt.transforms.scale3d","customName":"scale 3d","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":true,"flatten":0,"forceExecution":false},"scale":[1,1,1],"center":[0,0,0]},"inputs":{"shape":{"connections":[{"node":"9d06ef5e24369305","output":"result","data":{}}]},"center":{"connections":[{"node":"fba7fd1cece44d85","output":"result","data":{}}]},"scale":{"connections":[{"node":"e9b6a54c5953ca00","output":"result","data":{}}]}},"position":[8984.508540035791,-1743.0321640288685]},"fba7fd1cece44d85":{"id":"fba7fd1cece44d85","name":"bitbybit.occt.shapes.edge.startPointOnEdge","customName":"start point","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false}},"inputs":{"shape":{"connections":[{"node":"9d06ef5e24369305","output":"result","data":{}}]}},"position":[8495.60473459495,-1107.5823572387346]},"e9b6a54c5953ca00":{"id":"e9b6a54c5953ca00","name":"bitbybit.vector.vectorXYZ","customName":"vector XYZ","async":false,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"x":1.4,"y":1,"z":1.4},"inputs":{},"position":[8496.363400313452,-1408.2945223377474]},"087b35978a1e6653":{"id":"087b35978a1e6653","name":"bitbybit.occt.shapes.wire.createWireFromEdge","customName":"wire from edge","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false}},"inputs":{"shape":{"connections":[{"node":"32fc443558202a83","output":"result","data":{}}]}},"position":[9390.068189654503,-1925.670293250081]},"13078489566b5eef":{"id":"13078489566b5eef","name":"bitbybit.occt.transforms.translate","customName":"translate","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"translation":[0,0,0]},"inputs":{"shape":{"connections":[{"node":"7062a429128bbbda","output":"result","data":{}}]},"translation":{"connections":[{"node":"054d08ce2bd66edf","output":"result","data":{}}]}},"position":[5732.396483767488,2352.3445135497223]},"054d08ce2bd66edf":{"id":"054d08ce2bd66edf","name":"bitbybit.vector.vectorXYZ","customName":"vector XYZ","async":false,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"x":0,"y":-1.2,"z":0},"inputs":{"y":{"connections":[{"node":"55779498b35dc98f","output":"result","data":{}}]}},"position":[5156.97687940266,2540.3761294290425]},"55adf97796d98f99":{"id":"55adf97796d98f99","name":"bitbybit.occt.shapes.face.createFaceFromWire","customName":"face from wire","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"planar":false},"inputs":{"shape":{"connections":[{"node":"4deb0b64f700dd4b","output":"result","data":{}}]}},"position":[6768.980996975437,2391.5797184012094]},"4deb0b64f700dd4b":{"id":"4deb0b64f700dd4b","name":"bitbybit.occt.operations.offset","customName":"offset","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"distance":2.5,"tolerance":0.1},"inputs":{"shape":{"connections":[{"node":"13078489566b5eef","output":"result","data":{}}]}},"position":[6342.77031174747,2369.736569338771]},"f22d900f9813a492":{"id":"f22d900f9813a492","name":"bitbybit.babylon.scene.enableSkybox","customName":"skybox","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false},"skybox":"city","size":1000,"blur":0.4,"environmentIntensity":0.7},"inputs":{},"position":[1650.7065963940333,835.6647595775457]},"ca40c47ead4360da":{"id":"ca40c47ead4360da","name":"bitbybit.babylon.scene.drawDirectionalLight","customName":"directional light","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false},"direction":[-100,-100,-100],"intensity":2,"diffuse":"#2e58ff","specular":"#ffffff","shadowGeneratorMapSize":4000,"enableShadows":true,"shadowDarkness":0,"shadowUsePercentageCloserFiltering":true,"shadowContactHardeningLightSizeUVRatio":0.2,"shadowBias":0.0001,"shadowNormalBias":0.002,"shadowMaxZ":1000,"shadowMinZ":0},"inputs":{"direction":{"connections":[{"node":"18ae3157097a06c2","output":"result","data":{}}]}},"position":[3005.0053829155468,824.7236024677266]},"18ae3157097a06c2":{"id":"18ae3157097a06c2","name":"bitbybit.vector.vectorXYZ","customName":"vector XYZ","async":false,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"x":100,"y":-100,"z":-100},"inputs":{},"position":[2624.0215658508637,841.8520354765467]},"44a44f940d2403e9":{"id":"44a44f940d2403e9","name":"bitbybit.babylon.gaussianSplatting.create","customName":"gaussian splatting mesh","async":true,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false},"url":"https://cdn.shopify.com/s/files/1/0700/3350/6556/files/palm.splat?v=1748366746\"},\"inputs\":{},\"position\":[4751.9425490383555,711.4816482546073]},\"841f165699246a73\":{\"id\":\"841f165699246a73\",\"name\":\"bitbybit.babylon.mesh.setPosition\",\"customName\":\"position\",\"async\":false,\"drawable\":false,\"data\":{\"genericNodeData\":{\"hide\":false,\"oneOnOne\":false,\"flatten\":0,\"forceExecution\":false}},\"inputs\":{\"babylonMesh\":{\"connections\":[{\"node\":\"44a44f940d2403e9\",\"output\":\"result\",\"data\":{}}]},\"position\":{\"connections\":[{\"node\":\"e505f9ef2fc88ee7\",\"output\":\"result\",\"data\":{}}]}},\"position\":[5613.246744488098,695.3142364056908]},\"e505f9ef2fc88ee7\":{\"id\":\"e505f9ef2fc88ee7\",\"name\":\"bitbybit.vector.vectorXYZ\",\"customName\":\"vector XYZ","async":false,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"x":-0.2,"y":1,"z":0.5},"inputs":{},"position":[5231.792196468373,1004.8103018109294]},"890ef81db9d88fc8":{"id":"890ef81db9d88fc8","name":"bitbybit.babylon.mesh.setScale","customName":"scale","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false}},"inputs":{"scale":{"connections":[{"node":"d6b9373286243995","output":"result","data":{}}]},"babylonMesh":{"connections":[{"node":"44a44f940d2403e9","output":"result","data":{}}]}},"position":[5891.1539251810345,958.020720002286]},"d6b9373286243995":{"id":"d6b9373286243995","name":"bitbybit.vector.vectorXYZ","customName":"vector XYZ","async":false,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"x":1,"y":1,"z":1},"inputs":{},"position":[5556.499207433067,1286.6279930527721]},"b8bb7b1d98e8c85b":{"id":"b8bb7b1d98e8c85b","name":"bitbybit.vector.vectorXYZ","customName":"vector XYZ","async":false,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"x":-0.18,"y":0,"z":0.45},"inputs":{"y":{"connections":[{"node":"eae61f00ce184b8b","output":"result","data":{}}]}},"position":[6373.181765925082,1207.4768577537825]},"0ccfe72266c5859a":{"id":"0ccfe72266c5859a","name":"bitbybit.occt.shapes.solid.createCylinder","customName":"cylinder","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"radius":0.5,"height":1.65,"center":[0,0,0],"direction":[0,1,0],"angle":360,"originOnCenter":false},"inputs":{"center":{"connections":[{"node":"b8bb7b1d98e8c85b","output":"result","data":{}}]},"height":{"connections":[{"node":"f2017f2958745284","output":"result","data":{}}]}},"position":[6968.899069960056,1246.8500134109543]},"86142d7043ff6d8e":{"id":"86142d7043ff6d8e","name":"bitbybit.occt.fillets.chamferEdges","customName":"chamfer edges","async":true,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"distance":0.05},"inputs":{"shape":{"connections":[{"node":"0ccfe72266c5859a","output":"result","data":{}}]}},"position":[7421.160467659323,1296.3350040376863]},"8c36b39be9c70c02":{"id":"8c36b39be9c70c02","name":"bitbybit.math.numberSlider","customName":"number slider","data":{"options":{"min":10,"max":60,"step":5,"width":350},"number":25},"inputs":{},"position":[-4248.128815922817,-439.6088574546025]},"fa78a98177e286dc":{"id":"fa78a98177e286dc","name":"bitbybit.runner.getRunnerInputValue","customName":"get runner input value","data":{"property":"Number Of Legs"},"inputs":{},"position":[-4196.536420780811,-614.9271423907692]},"149339a9019fcd93":{"id":"149339a9019fcd93","name":"bitbybit.logic.firstDefinedValueGate","customName":"first defined value gate","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false}},"inputs":{"value1":{"connections":[{"node":"fa78a98177e286dc","output":"result","data":{}}]},"value2":{"connections":[{"node":"8c36b39be9c70c02","output":"result","data":{}}]}},"position":[-3242.3487200102836,-590.3351837157991]},"b1110e77898e19e6":{"id":"b1110e77898e19e6","name":"bitbybit.vector.vectorXYZ","customName":"vector XYZ","async":false,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"x":1,"y":1,"z":2},"inputs":{"y":{"connections":[{"node":"691d6389cfec4831","output":"result","data":{}}]}},"position":[-2403.0199548657074,133.26323313104763]},"ffdd0b6754519bd6":{"id":"ffdd0b6754519bd6","name":"bitbybit.vector.vectorXYZ","customName":"vector XYZ","async":false,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"x":-1.2,"y":1,"z":1},"inputs":{"y":{"connections":[{"node":"691d6389cfec4831","output":"result","data":{}}]}},"position":[-2403.6899334321893,441.85230580617025]},"de6b838dc25d88c7":{"id":"de6b838dc25d88c7","name":"bitbybit.vector.vectorXYZ","customName":"vector XYZ","async":false,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"x":-1.2,"y":1,"z":-1.2},"inputs":{"y":{"connections":[{"node":"691d6389cfec4831","output":"result","data":{}}]}},"position":[-2404.1581532347413,742.6765260379321]},"a70860061600161b":{"id":"a70860061600161b","name":"bitbybit.lists.createList","customName":"create list","data":{},"inputs":{"listElements":{"connections":[{"node":"b1110e77898e19e6","output":"result","data":{}},{"node":"ffdd0b6754519bd6","output":"result","data":{}},{"node":"de6b838dc25d88c7","output":"result","data":{}}]}},"position":[-1982.8246724408068,488.03880933375115]},"cc9a7471b3e3946d":{"id":"cc9a7471b3e3946d","name":"bitbybit.vector.vectorXYZ","customName":"vector XYZ","async":false,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"x":2,"y":1,"z":4},"inputs":{"y":{"connections":[{"node":"691d6389cfec4831","output":"result","data":{}}]}},"position":[-2406.5353954022034,1124.4176898319151]},"d6e613c863c15aef":{"id":"d6e613c863c15aef","name":"bitbybit.vector.vectorXYZ","customName":"vector XYZ","async":false,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"x":-3,"y":1,"z":2},"inputs":{"y":{"connections":[{"node":"691d6389cfec4831","output":"result","data":{}}]}},"position":[-2407.4606247744296,1433.8058733485086]},"822c8348e43e8ad7":{"id":"822c8348e43e8ad7","name":"bitbybit.vector.vectorXYZ","customName":"vector XYZ","async":false,"drawable":true,"data":{"genericNodeData":{"hide":true,"oneOnOne":false,"flatten":0,"forceExecution":false},"x":-2,"y":1,"z":-4},"inputs":{"y":{"connections":[{"node":"691d6389cfec4831","output":"result","data":{}}]}},"position":[-2406.225270367969,1744.8005843105161]},"b51edd3cfa39f8fc":{"id":"b51edd3cfa39f8fc","name":"bitbybit.lists.createList","customName":"create list","data":{},"inputs":{"listElements":{"connections":[{"node":"cc9a7471b3e3946d","output":"result","data":{}},{"node":"d6e613c863c15aef","output":"result","data":{}},{"node":"822c8348e43e8ad7","output":"result","data":{}}]}},"position":[-1921.2356582450416,1410.6268943634414]},"0f778b0a1065597b":{"id":"0f778b0a1065597b","name":"bitbybit.math.numberSlider","customName":"number slider","data":{"options":{"min":0.5,"max":1.5,"step":0.1,"width":350},"number":1.1},"inputs":{},"position":[-4204.5920226457,898.4830146129152]},"f44c67c5f14d69f5":{"id":"f44c67c5f14d69f5","name":"bitbybit.math.numberSlider","customName":"number slider","data":{"options":{"min":0.1,"max":0.4,"step":0.05,"width":350},"number":0.25},"inputs":{},"position":[-4249.543638794074,2751.191594599157]},"7932e6aadf05f2bb":{"id":"7932e6aadf05f2bb","name":"bitbybit.math.twoNrOperation","customName":"two numbers","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false},"first":1,"second":1,"operation":"add"},"inputs":{"first":{"connections":[{"node":"691d6389cfec4831","output":"result","data":{}}]},"second":{"connections":[{"node":"c73eaf8cb35cb484","output":"result","data":{}}]}},"position":[4271.507570419937,2654.000603389978]},"55779498b35dc98f":{"id":"55779498b35dc98f","name":"bitbybit.math.oneNrOperation","customName":"one number","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false},"number":1,"operation":"negate"},"inputs":{"number":{"connections":[{"node":"7932e6aadf05f2bb","output":"result","data":{}}]}},"position":[4739.730253011827,2612.5233517649554]},"eae61f00ce184b8b":{"id":"eae61f00ce184b8b","name":"bitbybit.math.oneNrOperation","customName":"one number","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false},"number":1,"operation":"negate"},"inputs":{"number":{"connections":[{"node":"c73eaf8cb35cb484","output":"result","data":{}}]}},"position":[5591.062236951253,1671.598403893827]},"9fe43d005daa838c":{"id":"9fe43d005daa838c","name":"bitbybit.math.number","customName":"number","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false},"number":1.65},"inputs":{},"position":[6352.678960357757,1640.0854172077222]},"f2017f2958745284":{"id":"f2017f2958745284","name":"bitbybit.math.twoNrOperation","customName":"two numbers","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false},"first":1,"second":1,"operation":"add"},"inputs":{"first":{"connections":[{"node":"9fe43d005daa838c","output":"result","data":{}}]},"second":{"connections":[{"node":"c73eaf8cb35cb484","output":"result","data":{}}]}},"position":[6761.8897649539995,1850.5716394800186]},"1a279cda69fd67d9":{"id":"1a279cda69fd67d9","name":"bitbybit.runner.getRunnerInputValue","customName":"get runner input value","data":{"property":"properties[Height]"},"inputs":{},"position":[-4184.949992696733,724.2649439486801]},"691d6389cfec4831":{"id":"691d6389cfec4831","name":"bitbybit.logic.firstDefinedValueGate","customName":"first defined value gate","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false}},"inputs":{"value2":{"connections":[{"node":"0f778b0a1065597b","output":"result","data":{}}]},"value1":{"connections":[{"node":"1a279cda69fd67d9","output":"result","data":{}}]}},"position":[-3568.0838829879604,776.6838143286884]},"54fc5a29afe80d17":{"id":"54fc5a29afe80d17","name":"bitbybit.runner.getRunnerInputValue","customName":"get runner input value","data":{"property":"properties[Leg Thickness]"},"inputs":{},"position":[-4179.531473814622,2586.2386388504688]},"c73eaf8cb35cb484":{"id":"c73eaf8cb35cb484","name":"bitbybit.logic.firstDefinedValueGate","customName":"first defined value gate","async":false,"drawable":false,"data":{"genericNodeData":{"hide":false,"oneOnOne":false,"flatten":0,"forceExecution":false}},"inputs":{"value1":{"connections":[{"node":"54fc5a29afe80d17","output":"result","data":{}}]},"value2":{"connections":[{"node":"f44c67c5f14d69f5","output":"result","data":{}}]}},"position":[-2371.0444461204584,2603.229365866762]},"a6f00fa7c90754c5":{"id":"a6f00fa7c90754c5","name":"bitbybit.runner.setRunnerResultValue","customName":"set runner result value","data":{"property":"meshes"},"inputs":{"value":{"connections":[{"node":"54d9b6960627d6eb","output":"list","data":{}}]}},"position":[12367.318745824148,645.5640762169619]},"54d9b6960627d6eb":{"id":"54d9b6960627d6eb","name":"bitbybit.lists.createList","customName":"create list","data":{},"inputs":{"listElements":{"connections":[{"node":"ba7a40ecbe3da221","output":"result","data":{}},{"node":"34e1abf8b93ca0ac","output":"result","data":{}},{"node":"44a44f940d2403e9","output":"result","data":{}},{"node":"9758a707c31da08e","output":"result","data":{}}]}},"position":[11970.963984525006,637.018196152786]}}}","version":"0.20.8","type":"rete"}} title="Bitbybit Rete Editor - 3D Palm Table Configurator" description="Draws 3D Table with palm and controls its size via inputs coming from external executing program" />

Important Note on Mobile Devices

Scripts that involve complex geometry calculations or many detailed 3D models can be resource-intensive. Some mobile devices, particularly older models or iPhones (due to Safari's memory limitations for browser tabs), might struggle to run very heavy scripts. If the script exceeds the available memory, the browser tab may restart or crash.

Please take this into account when designing your scripts, especially if a significant portion of your audience uses mobile devices. Test your configurators thoroughly on various devices.


This tutorial provides a glimpse into creating more advanced 3D product configurators for Shopify by combining Bitbybit's parametric capabilities with Shopify's variants and custom Liquid UI elements.