Name
*
Code
{"properties":{"frame":395,"maxFrame":600,"maxFrameLocked":false,"realtimeState":true,"mainCameraPath":"/cameras/cameras:sopGroup/perspectiveCamera1","versions":{"polygonjs":"1.5.75"}},"root":{"type":"root","nodes":{"geo1":{"type":"geo","nodes":{"decompose1":{"type":"decompose","nodes":{"COP":{"type":"copNetwork"},"MAT":{"type":"materialsNetwork","nodes":{"meshStandard__export_prep_mesh_0":{"type":"meshStandard","params":{"color":{"raw_input":[0,1,0.3843137254901961],"overriden_options":{"conversion":"no conversion"}},"useVertexColors":1,"emissive":{"overriden_options":{"conversion":"no conversion"}},"useEnvMap":true,"envMap":"../../../../COP/envMap","normalScale":[1,-1],"metalness":0.88,"roughness":0.1}},"meshStandard__export_prep_mesh_0_1":{"type":"meshStandard","params":{"color":{"raw_input":[0.02732089163382382,0.009134058699157796,0.3231432091022285],"overriden_options":{"conversion":"no conversion"}},"useVertexColors":1,"emissive":{"overriden_options":{"conversion":"no conversion"}},"normalScale":[1,-1],"roughness":-0.151999965}},"meshStandard__export_prep_mesh_0_2":{"type":"meshStandard","params":{"color":{"raw_input":[0.588235319,0.588235319,0.588235319],"overriden_options":{"conversion":"no conversion"}},"useVertexColors":1,"emissive":{"overriden_options":{"conversion":"no conversion"}},"normalScale":[1,-1],"roughness":-0.151999965}},"meshStandard__export_prep_mesh_0_3":{"type":"meshStandard","params":{"color":{"raw_input":[0.00999999978,0.00999999978,0.00999999978],"overriden_options":{"conversion":"no conversion"}},"useVertexColors":1,"emissive":{"overriden_options":{"conversion":"no conversion"}},"normalScale":[1,-1],"roughness":-0.151999965}},"meshStandard__export_prep_mesh_0_4":{"type":"meshStandard","params":{"color":{"raw_input":[0.00999999978,0.00999999978,0.00999999978],"overriden_options":{"conversion":"no conversion"}},"useVertexColors":1,"emissive":{"overriden_options":{"conversion":"no conversion"}},"normalScale":[1,-1],"roughness":-0.151999965}}}},"material__export_prep_mesh_0":{"type":"material","params":{"group":"/export_prep/mesh_0","material":"../MAT/meshStandard__export_prep_mesh_0"},"inputs":["subnetInput1"]},"material__export_prep_mesh_0_1":{"type":"material","params":{"group":"/export_prep/mesh_0_1","material":"../MAT/meshStandard__export_prep_mesh_0_1"},"inputs":["material__export_prep_mesh_0"]},"material__export_prep_mesh_0_2":{"type":"material","params":{"group":"/export_prep/mesh_0_2","material":"../MAT/meshStandard__export_prep_mesh_0_2"},"inputs":["material__export_prep_mesh_0_1"]},"material__export_prep_mesh_0_3":{"type":"material","params":{"group":"/export_prep/mesh_0_3","material":"../MAT/meshStandard__export_prep_mesh_0_3"},"inputs":["material__export_prep_mesh_0_2"]},"material__export_prep_mesh_0_4":{"type":"material","params":{"group":"/export_prep/mesh_0_4","material":"../MAT/meshStandard__export_prep_mesh_0_4"},"inputs":["material__export_prep_mesh_0_3"]},"subnetInput1":{"type":"subnetInput"},"subnetOutput1":{"type":"subnetOutput","inputs":["material__export_prep_mesh_0_4"],"flags":{"display":true}}},"inputs":["fileGLTF1"],"flags":{"display":true}},"fileGLTF1":{"type":"fileGLTF","params":{"url":"https://raw.githubusercontent.com/polygonjs/polygonjs-assets/master/models/car.glb"}}},"params":{"CADLinearTolerance":{"overriden_options":{"callback":"{}"}},"CADAngularTolerance":{"overriden_options":{"callback":"{}"}},"CADCurveAbscissa":{"overriden_options":{"callback":"{}"}},"CADCurveTolerance":{"overriden_options":{"callback":"{}"}},"CADDisplayEdges":{"overriden_options":{"callback":"{}"}},"CADEdgesColor":{"overriden_options":{"callback":"{}"}},"CADDisplayMeshes":{"overriden_options":{"callback":"{}"}},"CADMeshesColor":{"overriden_options":{"callback":"{}"}},"CADWireframe":{"overriden_options":{"callback":"{}"}},"CSGFacetAngle":{"overriden_options":{"callback":"{}"}},"CSGLinesColor":{"overriden_options":{"callback":"{}"}},"CSGMeshesColor":{"overriden_options":{"callback":"{}"}},"CSGWireframe":{"overriden_options":{"callback":"{}"}},"QUADTriangles":{"overriden_options":{"callback":"{}"}},"QUADWireframe":{"overriden_options":{"callback":"{}"}},"TetScale":{"overriden_options":{"callback":"{}"}},"TetDisplayLines":{"overriden_options":{"callback":"{}"}},"TetDisplaySharedFaces":{"overriden_options":{"callback":"{}"}},"TetDisplayPoints":{"overriden_options":{"callback":"{}"}},"TetDisplayCenter":{"overriden_options":{"callback":"{}"}},"TetDisplaySphere":{"overriden_options":{"callback":"{}"}}},"flags":{"display":true}},"ground":{"type":"geo","nodes":{"material1":{"type":"material","params":{"material":"../MAT/meshStandardBuilder1"},"inputs":["box1"],"flags":{"display":true}},"MAT":{"type":"materialsNetwork","nodes":{"meshStandardBuilder1":{"type":"meshStandardBuilder","nodes":{"globals1":{"type":"globals"},"output1":{"type":"output","inputs":[null,null,{"index":2,"inputName":"color","node":"mix1","output":"mix"}]},"vec3ToFloat1":{"type":"vec3ToFloat","params":{"vec":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"vec","node":"globals1","output":"position"}]},"floatToVec2_1":{"type":"floatToVec2","params":{"x":{"overriden_options":{}},"y":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"x","node":"vec3ToFloat1","output":"x"},{"index":1,"inputName":"y","node":"vec3ToFloat1","output":"z"}]},"checkers1":{"type":"checkers","params":{"uv":{"overriden_options":{}},"freq":{"overriden_options":{}},"freqMult":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"uv","node":"floatToVec2_1","output":"vec2"}]},"mix1":{"type":"mix","params":{"value0":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false}},"value1":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false}},"blend":{"type":"float","default_value":0.5,"options":{"spare":true,"editable":false}}},"inputs":[{"index":0,"inputName":"value0","node":"constant1","output":"val"},{"index":1,"inputName":"value1","node":"constant2","output":"val"},{"index":2,"inputName":"blend","node":"checkers1","output":"checker"}],"connection_points":{"in":[{"name":"value0","type":"vec3"},{"name":"value1","type":"vec3"},{"name":"blend","type":"float"}],"out":[{"name":"mix","type":"vec3"}]}},"constant1":{"type":"constant","params":{"type":4,"color":[0.24313725490196078,0.5098039215686274,0.8549019607843137],"asColor":true},"connection_points":{"in":[],"out":[{"name":"val","type":"vec3"}]}},"constant2":{"type":"constant","params":{"type":4,"color":[0.047058823529411764,0.10196078431372549,0.17647058823529413],"asColor":true},"connection_points":{"in":[],"out":[{"name":"val","type":"vec3"}]}}},"persisted_config":{"material":{"metadata":{"version":4.6,"type":"Material","generator":"Material.toJSON"},"uuid":"/ground/MAT/meshStandardBuilder1-main","type":"MeshStandardMaterial","color":16777215,"roughness":1,"metalness":0,"emissive":0,"envMapIntensity":1,"blendColor":0,"fog":false},"onBeforeCompileDataJSONWithoutShaders":{"paramConfigs":[],"timeDependent":false,"resolutionDependent":false,"raymarchingLightsWorldCoordsDependent":false},"customMaterials":{"customDepthMaterial":{"material":{"metadata":{"version":4.6,"type":"Material","generator":"Material.toJSON"},"uuid":"/ground/MAT/meshStandardBuilder1-customDepthMaterial","type":"MeshDepthMaterial","name":"customDepthMaterial","side":1,"blendColor":0,"depthPacking":3201},"onBeforeCompileDataJSONWithoutShaders":{"paramConfigs":[],"timeDependent":false,"resolutionDependent":false,"raymarchingLightsWorldCoordsDependent":false}},"customDistanceMaterial":{"material":{"metadata":{"version":4.6,"type":"Material","generator":"Material.toJSON"},"uuid":"/ground/MAT/meshStandardBuilder1-customDistanceMaterial","type":"MeshDistanceMaterial","name":"customDistanceMaterial","blendColor":0},"onBeforeCompileDataJSONWithoutShaders":{"paramConfigs":[],"timeDependent":false,"resolutionDependent":false,"raymarchingLightsWorldCoordsDependent":false}},"customDepthDOFMaterial":{"material":{"metadata":{"version":4.6,"type":"Material","generator":"Material.toJSON"},"uuid":"/ground/MAT/meshStandardBuilder1-customDepthDOFMaterial","type":"MeshDepthMaterial","name":"customDepthDOFMaterial","blendColor":0,"depthPacking":3200},"onBeforeCompileDataJSONWithoutShaders":{"paramConfigs":[],"timeDependent":false,"resolutionDependent":false,"raymarchingLightsWorldCoordsDependent":false}}}}}}},"box1":{"type":"box","params":{"sizes":[9.98,1,9.98],"center":[0,-0.5,0]}}},"params":{"CADLinearTolerance":{"overriden_options":{"callback":"{}"}},"CADAngularTolerance":{"overriden_options":{"callback":"{}"}},"CADCurveAbscissa":{"overriden_options":{"callback":"{}"}},"CADCurveTolerance":{"overriden_options":{"callback":"{}"}},"CADDisplayEdges":{"overriden_options":{"callback":"{}"}},"CADEdgesColor":{"overriden_options":{"callback":"{}"}},"CADDisplayMeshes":{"overriden_options":{"callback":"{}"}},"CADMeshesColor":{"overriden_options":{"callback":"{}"}},"CADWireframe":{"overriden_options":{"callback":"{}"}},"CSGFacetAngle":{"overriden_options":{"callback":"{}"}},"CSGLinesColor":{"overriden_options":{"callback":"{}"}},"CSGMeshesColor":{"overriden_options":{"callback":"{}"}},"CSGWireframe":{"overriden_options":{"callback":"{}"}},"QUADTriangles":{"overriden_options":{"callback":"{}"}},"QUADWireframe":{"overriden_options":{"callback":"{}"}},"TetScale":{"overriden_options":{"callback":"{}"}},"TetDisplayLines":{"overriden_options":{"callback":"{}"}},"TetDisplaySharedFaces":{"overriden_options":{"callback":"{}"}},"TetDisplayPoints":{"overriden_options":{"callback":"{}"}},"TetDisplayCenter":{"overriden_options":{"callback":"{}"}},"TetDisplaySphere":{"overriden_options":{"callback":"{}"}}},"flags":{"display":true}},"COP":{"type":"copNetwork","nodes":{"envMap":{"type":"envMap","inputs":["imageEnv"]},"imageEnv":{"type":"imageEXR","params":{"tminFilter":true,"tmagFilter":true,"tanisotropy":true,"useRendererMaxAnisotropy":true}},"image1":{"type":"image"}}},"lights":{"type":"geo","nodes":{"hemisphereLight1":{"type":"hemisphereLight","params":{"intensity":0.52}},"spotLight1":{"type":"spotLight","params":{"decay":0.1,"distance":10,"castShadow":1}},"polarTransform1":{"type":"polarTransform","params":{"center":[0,0.7,0],"latitude":25.2,"depth":3},"inputs":["spotLight1"]},"merge1":{"type":"merge","inputs":["hemisphereLight1","polarTransform1"],"flags":{"display":true}}},"params":{"CADLinearTolerance":{"overriden_options":{"callback":"{}"}},"CADAngularTolerance":{"overriden_options":{"callback":"{}"}},"CADCurveAbscissa":{"overriden_options":{"callback":"{}"}},"CADCurveTolerance":{"overriden_options":{"callback":"{}"}},"CADDisplayEdges":{"overriden_options":{"callback":"{}"}},"CADEdgesColor":{"overriden_options":{"callback":"{}"}},"CADDisplayMeshes":{"overriden_options":{"callback":"{}"}},"CADMeshesColor":{"overriden_options":{"callback":"{}"}},"CADWireframe":{"overriden_options":{"callback":"{}"}},"CSGFacetAngle":{"overriden_options":{"callback":"{}"}},"CSGLinesColor":{"overriden_options":{"callback":"{}"}},"CSGMeshesColor":{"overriden_options":{"callback":"{}"}},"CSGWireframe":{"overriden_options":{"callback":"{}"}},"QUADTriangles":{"overriden_options":{"callback":"{}"}},"QUADWireframe":{"overriden_options":{"callback":"{}"}},"TetScale":{"overriden_options":{"callback":"{}"}},"TetDisplayLines":{"overriden_options":{"callback":"{}"}},"TetDisplaySharedFaces":{"overriden_options":{"callback":"{}"}},"TetDisplayPoints":{"overriden_options":{"callback":"{}"}},"TetDisplayCenter":{"overriden_options":{"callback":"{}"}},"TetDisplaySphere":{"overriden_options":{"callback":"{}"}}},"flags":{"display":true}},"cameras":{"type":"geo","nodes":{"perspectiveCamera1":{"type":"perspectiveCamera","params":{"position":[3.3,3.3,3.3]}},"cameraControls1":{"type":"cameraControls","nodes":{"cameraOrbitControls1":{"type":"cameraOrbitControls","params":{"target":[-0.28284988228698366,0.3477113632481661,-0.001030848390162673]}}},"params":{"node":"cameraOrbitControls1"},"inputs":["perspectiveCamera1"]},"setChildren1":{"type":"setChildren","inputs":["cameraControls1","transform4"],"flags":{"display":true}},"sphere1":{"type":"sphere","params":{"radius":0.14}},"material1":{"type":"material","params":{"material":"../MAT/meshStandard_RED"},"inputs":["sphere1"]},"MAT":{"type":"materialsNetwork","nodes":{"meshStandard_RED":{"type":"meshStandard","params":{"color":[1,0,0]}},"meshStandard_GREEN":{"type":"meshStandard","params":{"color":[0.001214107934117647,0.5775804404214573,0.04970656597728775]}},"meshStandard_BLUE":{"type":"meshStandard","params":{"color":[0.031896033067374104,0.21223075740342195,0.6444796819634361]}}}},"material2":{"type":"material","params":{"material":"../MAT/meshStandard_GREEN"},"inputs":["sphere1"]},"material3":{"type":"material","params":{"material":"../MAT/meshStandard_BLUE"},"inputs":["sphere1"]},"merge1":{"type":"merge","inputs":["attribCreate1","attribCreate2","attribCreate3"]},"transform1":{"type":"transform","params":{"applyOn":1,"t":[-0.353,0,0]},"inputs":["material1"]},"transform2":{"type":"transform","params":{"applyOn":1},"inputs":["material2"]},"transform3":{"type":"transform","params":{"applyOn":1,"t":["-ch(\"../transform1/tx\")",0,0]},"inputs":["material3"]},"hierarchy1":{"type":"hierarchy","inputs":["actor_update_car_body_color"]},"transform4":{"type":"transform","params":{"applyOn":1,"t":[0,-0.48000000000000004,-1.5]},"inputs":["hierarchy1"]},"actor_hover_highlight":{"type":"actor","nodes":{"onObjectHover1":{"type":"onObjectHover","maxInputsCount":6},"getObjectAttribute1":{"type":"getObjectAttribute","params":{"type":6,"attribName":{"type":"string","default_value":"","options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false},"raw_input":"getObjectAttribute1"},"defaultVector3":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}}},"maxInputsCount":3,"inputs":[null,{"index":1,"inputName":"attribName","node":"constant1","output":"val"}],"connection_points":{"in":[{"name":"Object3D","type":"Object3D","isArray":false},{"name":"attribName","type":"string","isArray":false},{"name":"defaultVector3","type":"Vector3","isArray":false}],"out":[{"name":"val","type":"Vector3","isArray":false}]}},"constant1":{"type":"constant","params":{"type":4,"string":"color"},"connection_points":{"in":[],"out":[{"name":"val","type":"string","isArray":false}]}},"multScalar1":{"type":"multScalar","params":{"value":{"type":"color","default_value":[1,1,1],"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}},"mult":{"type":"float","default_value":1,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false},"raw_input":2}},"inputs":[{"index":0,"inputName":"value","node":"vec3ToColor1","output":"Color"}],"connection_points":{"in":[{"name":"value","type":"Color","isArray":false},{"name":"mult","type":"float","isArray":false}],"out":[{"name":"val","type":"Color","isArray":false}]}},"twoWaySwitch1":{"type":"twoWaySwitch","params":{"condition":{"type":"boolean","default_value":false,"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}},"ifTrue":{"type":"color","default_value":[1,1,1],"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false},"raw_input":[0,0,0]},"ifFalse":{"type":"color","default_value":[1,1,1],"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false},"raw_input":[0,0,0]}},"inputs":[{"index":0,"inputName":"condition","node":"onObjectHover1","output":"hovered"},{"index":1,"inputName":"ifTrue","node":"multScalar1","output":"val"},{"index":2,"inputName":"ifFalse","node":"vec3ToColor1","output":"Color"}],"connection_points":{"in":[{"name":"condition","type":"boolean","isArray":false},{"name":"ifTrue","type":"Color","isArray":false},{"name":"ifFalse","type":"Color","isArray":false}],"out":[{"name":"val","type":"Color","isArray":false}]}},"setMaterialColor1":{"type":"setMaterialColor","params":{"color":{"overriden_options":{}},"lerp":{"overriden_options":{}}},"maxInputsCount":4,"inputs":[{"index":0,"inputName":"trigger","node":"onObjectHover1","output":"trigger"},null,{"index":2,"inputName":"color","node":"twoWaySwitch1","output":"val"}]},"setViewer1":{"type":"setViewer","params":{"className":{"overriden_options":{}},"set":{"overriden_options":{}}},"maxInputsCount":3,"inputs":[{"index":0,"inputName":"trigger","node":"setMaterialColor1","output":"trigger"},null,{"index":2,"inputName":"set","node":"onObjectHover1","output":"hovered"}]},"vec3ToColor1":{"type":"vec3ToColor","params":{"vec3":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"vec3","node":"getObjectAttribute1","output":"val"}]}},"inputs":["merge1"],"persisted_config":{"variableNames":["VAR__getObjectAttribute1_defaultVector3","VAR__vec3ToColor1_vec3","VAR__vec3ToColor1__1","VAR__multScalar1_value","VAR__multScalar1__1","VAR__twoWaySwitch1_ifTrue","VAR__twoWaySwitch1_ifFalse","VAR__setMaterialColor1_color"],"variables":[{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Color","data":[1,1,1]},{"type":"Color","data":[1,1,1]},{"type":"Color","data":[1,1,1]},{"type":"Color","data":[1,1,1]},{"type":"Color","data":[1,1,1]},{"type":"Color","data":[1,1,1]}],"functionNames":["getObjectAttribute","vec3ToColor","multScalarColor","addObjectToObjectHoveredCheck","setMaterialColor","setViewer"],"serializedParamConfigs":[],"eventDatas":[{"type":"pointermove","emitter":"canvas","jsType":"onObjectHover"}]}},"attribCreate1":{"type":"attribCreate","params":{"class":3,"name":"color","size":3,"value3":[1,0,0]},"inputs":["transform1"]},"attribCreate2":{"type":"attribCreate","params":{"class":3,"name":"color","size":3,"value3":[0,1,0]},"inputs":["transform2"]},"attribCreate3":{"type":"attribCreate","params":{"class":3,"name":"color","size":3,"value3":[0,0,1]},"inputs":["transform3"]},"actor_update_car_body_color":{"type":"actor","nodes":{"onObjectClick1":{"type":"onObjectClick","maxInputsCount":14},"getMaterial1":{"type":"getMaterial","params":{"node":"/geo1/decompose1/MAT/meshStandard__export_prep_mesh_0"}},"setMaterialColor1":{"type":"setMaterialColor","params":{"color":{"overriden_options":{}},"lerp":{"overriden_options":{}}},"maxInputsCount":4,"inputs":[{"index":0,"inputName":"trigger","node":"onObjectClick1","output":"trigger"},{"index":1,"inputName":"Material","node":"getMaterial1","output":"Material"},{"index":2,"inputName":"color","node":"vec3ToColor1","output":"Color"}]},"getObjectAttribute1":{"type":"getObjectAttribute","params":{"type":6,"attribName":{"type":"string","default_value":"","options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false},"raw_input":"getObjectAttribute1","overriden_options":{}},"defaultVector3":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}}},"maxInputsCount":3,"inputs":[null,{"index":1,"inputName":"attribName","node":"constant2","output":"val"}],"connection_points":{"in":[{"name":"Object3D","type":"Object3D","isArray":false},{"name":"attribName","type":"string","isArray":false},{"name":"defaultVector3","type":"Vector3","isArray":false}],"out":[{"name":"val","type":"Vector3","isArray":false}]}},"constant2":{"type":"constant","params":{"type":4,"string":"color"},"connection_points":{"in":[],"out":[{"name":"val","type":"string","isArray":false}]}},"vec3ToColor1":{"type":"vec3ToColor","params":{"vec3":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"vec3","node":"getObjectAttribute1","output":"val"}]}},"inputs":["actor_hover_highlight"],"persisted_config":{"variableNames":["VAR__getObjectAttribute1_defaultVector3","VAR__vec3ToColor1_vec3","VAR__vec3ToColor1__1","VAR__setMaterialColor1_color"],"variables":[{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Color","data":[1,1,1]},{"type":"Color","data":[1,1,1]}],"functionNames":["getObjectAttribute","vec3ToColor","getMaterial","addObjectToObjectClickCheck","setMaterialColor"],"serializedParamConfigs":[],"eventDatas":[{"type":"pointerdown","emitter":"canvas","jsType":"onPointerdown"},{"type":"pointerup","emitter":"canvas","jsType":"onObjectPointerup"}]}}},"params":{"CADLinearTolerance":{"overriden_options":{"callback":"{}"}},"CADAngularTolerance":{"overriden_options":{"callback":"{}"}},"CADCurveAbscissa":{"overriden_options":{"callback":"{}"}},"CADCurveTolerance":{"overriden_options":{"callback":"{}"}},"CADDisplayEdges":{"overriden_options":{"callback":"{}"}},"CADEdgesColor":{"overriden_options":{"callback":"{}"}},"CADDisplayMeshes":{"overriden_options":{"callback":"{}"}},"CADMeshesColor":{"overriden_options":{"callback":"{}"}},"CADWireframe":{"overriden_options":{"callback":"{}"}},"CSGFacetAngle":{"overriden_options":{"callback":"{}"}},"CSGLinesColor":{"overriden_options":{"callback":"{}"}},"CSGMeshesColor":{"overriden_options":{"callback":"{}"}},"CSGWireframe":{"overriden_options":{"callback":"{}"}},"QUADTriangles":{"overriden_options":{"callback":"{}"}},"QUADWireframe":{"overriden_options":{"callback":"{}"}},"TetScale":{"overriden_options":{"callback":"{}"}},"TetDisplayLines":{"overriden_options":{"callback":"{}"}},"TetDisplaySharedFaces":{"overriden_options":{"callback":"{}"}},"TetDisplayPoints":{"overriden_options":{"callback":"{}"}},"TetDisplayCenter":{"overriden_options":{"callback":"{}"}},"TetDisplaySphere":{"overriden_options":{"callback":"{}"}}},"flags":{"display":true}}},"params":{"mainCameraPath":"/cameras/cameras:sopGroup/perspectiveCamera1"}},"ui":{"nodes":{"geo1":{"pos":[-50,-350],"nodes":{"decompose1":{"pos":[-100,300],"comment":"Clicking on the **decompose** button will create material nodes for each material imported by the file node above.\\n\\nThis will then allow you to edit the materials separately, giving you control on how you want this asset to look into your scene.\\n\\nThis is much more convenient than having to re-export the asset.","selection":["MAT"],"nodes":{"COP":{"pos":[0,0]},"MAT":{"pos":[200,0],"nodes":{"meshStandard__export_prep_mesh_0":{"pos":[0,-100]},"meshStandard__export_prep_mesh_0_1":{"pos":[200,150]},"meshStandard__export_prep_mesh_0_2":{"pos":[400,-100]},"meshStandard__export_prep_mesh_0_3":{"pos":[600,100]},"meshStandard__export_prep_mesh_0_4":{"pos":[800,-50]}}},"material__export_prep_mesh_0":{"pos":[400,-1000]},"material__export_prep_mesh_0_1":{"pos":[400,-800]},"material__export_prep_mesh_0_2":{"pos":[400,-600]},"material__export_prep_mesh_0_3":{"pos":[400,-400]},"material__export_prep_mesh_0_4":{"pos":[400,-200]},"subnetInput1":{"pos":[400,-1200]},"subnetOutput1":{"pos":[400,0]}}},"fileGLTF1":{"pos":[-100,150]}}},"ground":{"pos":[-50,-450],"nodes":{"material1":{"pos":[0,300]},"MAT":{"pos":[-200,300],"nodes":{"meshStandardBuilder1":{"pos":[0,200],"nodes":{"globals1":{"pos":[-450,0]},"output1":{"pos":[400,0]},"vec3ToFloat1":{"pos":[-200,200]},"floatToVec2_1":{"pos":[-100,200]},"checkers1":{"pos":[50,200]},"mix1":{"pos":[250,0]},"constant1":{"pos":[50,-150]},"constant2":{"pos":[0,0]}}}}},"box1":{"pos":[0,100]}}},"COP":{"pos":[-300,-50],"selection":["image1"],"nodes":{"envMap":{"pos":[50,250]},"imageEnv":{"pos":[50,100]},"image1":{"pos":[-200,100]}}},"lights":{"pos":[-50,-250],"selection":["hemisphereLight1"],"nodes":{"hemisphereLight1":{"pos":[50,-50]},"spotLight1":{"pos":[300,-50]},"polarTransform1":{"pos":[300,150]},"merge1":{"pos":[100,300]}}},"cameras":{"pos":[-50,-150],"selection":["actor_update_car_body_color"],"nodes":{"perspectiveCamera1":{"pos":[0,-50]},"cameraControls1":{"pos":[0,150],"nodes":{"cameraOrbitControls1":{"pos":[0,0]}}},"setChildren1":{"pos":[0,1000]},"sphere1":{"pos":[650,-350]},"material1":{"pos":[450,-200]},"MAT":{"pos":[-400,300],"selection":["meshStandard_GREEN"],"nodes":{"meshStandard_RED":{"pos":[0,0]},"meshStandard_GREEN":{"pos":[0,200]},"meshStandard_BLUE":{"pos":[0,400]}}},"material2":{"pos":[650,-200]},"material3":{"pos":[850,-200]},"merge1":{"pos":[650,300]},"transform1":{"pos":[450,-100]},"transform2":{"pos":[650,-100]},"transform3":{"pos":[850,-100]},"hierarchy1":{"pos":[650,700]},"transform4":{"pos":[650,800]},"actor_hover_highlight":{"pos":[650,400],"selection":["getObjectAttribute1","constant1","vec3ToColor1"],"nodes":{"onObjectHover1":{"pos":[0,-50]},"getObjectAttribute1":{"pos":[-150,250]},"constant1":{"pos":[-400,250]},"multScalar1":{"pos":[150,150]},"twoWaySwitch1":{"pos":[350,150]},"setMaterialColor1":{"pos":[700,-50]},"setViewer1":{"pos":[900,0]},"vec3ToColor1":{"pos":[-50,250]}}},"attribCreate1":{"pos":[450,50]},"attribCreate2":{"pos":[650,50]},"attribCreate3":{"pos":[850,50]},"actor_update_car_body_color":{"pos":[650,550],"nodes":{"onObjectClick1":{"pos":[200,-100]},"getMaterial1":{"pos":[200,300]},"setMaterialColor1":{"pos":[650,150]},"getObjectAttribute1":{"pos":[150,550]},"constant2":{"pos":[-100,550]},"vec3ToColor1":{"pos":[250,550]}}}}}}},"shaders":{"/ground/MAT/meshStandardBuilder1":{"vertex":"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n\n\n\n// /ground/MAT/meshStandardBuilder1/globals1\nvarying vec3 v_POLY_globals1_position;\n\n\n\n\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\n\n\n\t// /ground/MAT/meshStandardBuilder1/globals1\n\tv_POLY_globals1_position = vec3(position);\n\t\n\t// /ground/MAT/meshStandardBuilder1/output1\n\tvec3 transformed = position;\n\tvec3 objectNormal = normal;\n\t#ifdef USE_TANGENT\n\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t#endif\n\n\n\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n// removed:\n//\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n// removed:\n//\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}","fragment":"#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef USE_SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULAR_COLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\tuniform vec2 anisotropyVector;\n\t#ifdef USE_ANISOTROPYMAP\n\t\tuniform sampler2D anisotropyMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include <common>\n\n\n\n// /ground/MAT/meshStandardBuilder1/checkers1\n// https://iquilezles.org/articles/checkerfiltering/\nfloat checkers(vec2 p) {\n\tvec2 s = sign(fract(p*.5)-.5);\n\treturn .5 - .5*s.x*s.y;\n}\nfloat checkersGrad( in vec2 p, in vec2 ddx, in vec2 ddy )\n{\n // filter kernel\n vec2 w = max(abs(ddx), abs(ddy)) + 0.01;\n // analytical integral (box filter)\n vec2 i = 2.0*(abs(fract((p-0.5*w)/2.0)-0.5)-abs(fract((p+0.5*w)/2.0)-0.5))/w;\n // xor pattern\n return 0.5 - 0.5*i.x*i.y;\n}\n\n\n\n\n\n\n\n\n// /ground/MAT/meshStandardBuilder1/globals1\nvarying vec3 v_POLY_globals1_position;\n\n\n\n\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <iridescence_fragment>\n#include <cube_uv_reflection_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_physical_pars_fragment>\n#include <fog_pars_fragment>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_physical_pars_fragment>\n#include <transmission_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <clearcoat_pars_fragment>\n#include <iridescence_pars_fragment>\n#include <roughnessmap_pars_fragment>\n#include <metalnessmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nstruct SSSModel {\n\tbool isActive;\n\tvec3 color;\n\tfloat thickness;\n\tfloat power;\n\tfloat scale;\n\tfloat distortion;\n\tfloat ambient;\n\tfloat attenuation;\n};\n\nvoid RE_Direct_Scattering(\n\tconst in IncidentLight directLight,\n\tconst in vec3 geometryNormal,\n\tconst in vec3 geometryViewDir,\n\tconst in SSSModel sssModel,\n\tinout ReflectedLight reflectedLight\n\t){\n\tvec3 scatteringHalf = normalize(directLight.direction + (geometryNormal * sssModel.distortion));\n\tfloat scatteringDot = pow(saturate(dot(geometryViewDir, -scatteringHalf)), sssModel.power) * sssModel.scale;\n\tvec3 scatteringIllu = (scatteringDot + sssModel.ambient) * (sssModel.color * (1.0-sssModel.thickness));\n\treflectedLight.directDiffuse += scatteringIllu * sssModel.attenuation * directLight.color;\n}\n\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\n\n\n\t// /ground/MAT/meshStandardBuilder1/constant1\n\tvec3 v_POLY_constant1_val = vec3(0.24313725490196078, 0.5098039215686274, 0.8549019607843137);\n\t\n\t// /ground/MAT/meshStandardBuilder1/constant2\n\tvec3 v_POLY_constant2_val = vec3(0.047058823529411764, 0.10196078431372549, 0.17647058823529413);\n\t\n\t// /ground/MAT/meshStandardBuilder1/vec3ToFloat1\n\tfloat v_POLY_vec3ToFloat1_x = v_POLY_globals1_position.x;\n\tfloat v_POLY_vec3ToFloat1_z = v_POLY_globals1_position.z;\n\t\n\t// /ground/MAT/meshStandardBuilder1/floatToVec2_1\n\tvec2 v_POLY_floatToVec2_1_vec2 = vec2(v_POLY_vec3ToFloat1_x, v_POLY_vec3ToFloat1_z);\n\t\n\t// /ground/MAT/meshStandardBuilder1/checkers1\n\tvec2 v_POLY_checkers1_coord = v_POLY_floatToVec2_1_vec2*vec2(1.0, 1.0)*1.0;\n\tfloat v_POLY_checkers1_checker = checkersGrad(v_POLY_checkers1_coord, dFdx(v_POLY_checkers1_coord), dFdy(v_POLY_checkers1_coord));\n\t\n\t// /ground/MAT/meshStandardBuilder1/mix1\n\tvec3 v_POLY_mix1_mix = mix(v_POLY_constant1_val, v_POLY_constant2_val, v_POLY_checkers1_checker);\n\t\n\t// /ground/MAT/meshStandardBuilder1/output1\n\tdiffuseColor.xyz = v_POLY_mix1_mix;\n\tfloat POLY_metalness = 1.0;\n\tfloat POLY_roughness = 1.0;\n\tvec3 POLY_emissive = vec3(1.0, 1.0, 1.0);\n\tSSSModel POLY_SSSModel = SSSModel(/*isActive*/false,/*color*/vec3(1.0, 1.0, 1.0), /*thickness*/0.1, /*power*/2.0, /*scale*/16.0, /*distortion*/0.1,/*ambient*/0.4,/*attenuation*/0.8 );\n\n\n\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive * POLY_emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\tfloat roughnessFactor = roughness * POLY_roughness;\n\n#ifdef USE_ROUGHNESSMAP\n\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\n\t// reads channel G, compatible with a combined OcclusionRoughnessMetallic (RGB) texture\n\troughnessFactor *= texelRoughness.g;\n\n#endif\n\n\tfloat metalnessFactor = metalness * POLY_metalness;\n\n#ifdef USE_METALNESSMAP\n\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\n\t// reads channel B, compatible with a combined OcclusionRoughnessMetallic (RGB) texture\n\tmetalnessFactor *= texelMetalness.b;\n\n#endif\n\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <clearcoat_normal_fragment_begin>\n\t#include <clearcoat_normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_physical_fragment>\n\t#include <lights_fragment_begin>\nif(POLY_SSSModel.isActive){\n\tRE_Direct_Scattering(directLight, geometryNormal, geometryViewDir, POLY_SSSModel, reflectedLight);\n}\n\n\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include <transmission_fragment>\n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\n\t#endif\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}","customDepthMaterial.vertex":"#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n\n\n\n// /ground/MAT/meshStandardBuilder1/globals1\nvarying vec3 v_POLY_globals1_position;\n\n\n\n\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <uv_vertex>\n\t#include <batching_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n// removed:\n//\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n// removed:\n//\t#include <begin_vertex>\n\n\n\n\t// /ground/MAT/meshStandardBuilder1/globals1\n\tv_POLY_globals1_position = vec3(position);\n\t\n\t// /ground/MAT/meshStandardBuilder1/output1\n\tvec3 transformed = position;\n\tvec3 objectNormal = normal;\n\t#ifdef USE_TANGENT\n\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t#endif\n\n\n\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvHighPrecisionZW = gl_Position.zw;\n}","customDepthMaterial.fragment":"\n// INSERT DEFINES\n\n\n#if DEPTH_PACKING == 3200\n\n\tuniform float opacity;\n\n#endif\n\n#include <common>\n\n\n\n// /ground/MAT/meshStandardBuilder1/checkers1\n// https://iquilezles.org/articles/checkerfiltering/\nfloat checkers(vec2 p) {\n\tvec2 s = sign(fract(p*.5)-.5);\n\treturn .5 - .5*s.x*s.y;\n}\nfloat checkersGrad( in vec2 p, in vec2 ddx, in vec2 ddy )\n{\n // filter kernel\n vec2 w = max(abs(ddx), abs(ddy)) + 0.01;\n // analytical integral (box filter)\n vec2 i = 2.0*(abs(fract((p-0.5*w)/2.0)-0.5)-abs(fract((p+0.5*w)/2.0)-0.5))/w;\n // xor pattern\n return 0.5 - 0.5*i.x*i.y;\n}\n\n\n\n\n\n\n\n\n// /ground/MAT/meshStandardBuilder1/globals1\nvarying vec3 v_POLY_globals1_position;\n\n\n\n\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\n\nvarying vec2 vHighPrecisionZW;\n\nstruct SSSModel {\n\tbool isActive;\n\tvec3 color;\n\tfloat thickness;\n\tfloat power;\n\tfloat scale;\n\tfloat distortion;\n\tfloat ambient;\n\tfloat attenuation;\n};\n\nvoid RE_Direct_Scattering(\n\tconst in IncidentLight directLight,\n\tconst in vec3 geometryNormal,\n\tconst in vec3 geometryViewDir,\n\tconst in SSSModel sssModel,\n\tinout ReflectedLight reflectedLight\n\t){\n\tvec3 scatteringHalf = normalize(directLight.direction + (geometryNormal * sssModel.distortion));\n\tfloat scatteringDot = pow(saturate(dot(geometryViewDir, -scatteringHalf)), sssModel.power) * sssModel.scale;\n\tvec3 scatteringIllu = (scatteringDot + sssModel.ambient) * (sssModel.color * (1.0-sssModel.thickness));\n\treflectedLight.directDiffuse += scatteringIllu * sssModel.attenuation * directLight.color;\n}\n\nvoid main() {\n\n\t#include <clipping_planes_fragment>\n\n\tvec4 diffuseColor = vec4( 1.0 );\n\n\t#if DEPTH_PACKING == 3200\n\n\t\tdiffuseColor.a = opacity;\n\n\t#endif\n\n\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\n\n\n\t// /ground/MAT/meshStandardBuilder1/constant1\n\tvec3 v_POLY_constant1_val = vec3(0.24313725490196078, 0.5098039215686274, 0.8549019607843137);\n\t\n\t// /ground/MAT/meshStandardBuilder1/constant2\n\tvec3 v_POLY_constant2_val = vec3(0.047058823529411764, 0.10196078431372549, 0.17647058823529413);\n\t\n\t// /ground/MAT/meshStandardBuilder1/vec3ToFloat1\n\tfloat v_POLY_vec3ToFloat1_x = v_POLY_globals1_position.x;\n\tfloat v_POLY_vec3ToFloat1_z = v_POLY_globals1_position.z;\n\t\n\t// /ground/MAT/meshStandardBuilder1/floatToVec2_1\n\tvec2 v_POLY_floatToVec2_1_vec2 = vec2(v_POLY_vec3ToFloat1_x, v_POLY_vec3ToFloat1_z);\n\t\n\t// /ground/MAT/meshStandardBuilder1/checkers1\n\tvec2 v_POLY_checkers1_coord = v_POLY_floatToVec2_1_vec2*vec2(1.0, 1.0)*1.0;\n\tfloat v_POLY_checkers1_checker = checkersGrad(v_POLY_checkers1_coord, dFdx(v_POLY_checkers1_coord), dFdy(v_POLY_checkers1_coord));\n\t\n\t// /ground/MAT/meshStandardBuilder1/mix1\n\tvec3 v_POLY_mix1_mix = mix(v_POLY_constant1_val, v_POLY_constant2_val, v_POLY_checkers1_checker);\n\t\n\t// /ground/MAT/meshStandardBuilder1/output1\n\tdiffuseColor.xyz = v_POLY_mix1_mix;\n\tfloat POLY_metalness = 1.0;\n\tfloat POLY_roughness = 1.0;\n\tvec3 POLY_emissive = vec3(1.0, 1.0, 1.0);\n\tSSSModel POLY_SSSModel = SSSModel(/*isActive*/false,/*color*/vec3(1.0, 1.0, 1.0), /*thickness*/0.1, /*power*/2.0, /*scale*/16.0, /*distortion*/0.1,/*ambient*/0.4,/*attenuation*/0.8 );\n\n\n\n\n\t// INSERT BODY\n\t// the new body lines should be added before the alphatest_fragment\n\t// so that alpha is set before (which is really how it would be set if the alphamap_fragment above was used by the material node parameters)\n\n\t#include <alphatest_fragment>\n\n\t#include <logdepthbuf_fragment>\n\n\n\t// Higher precision equivalent of gl_FragCoord.z. This assumes depthRange has been left to its default values.\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\n\t#if DEPTH_PACKING == 3200\n\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), diffuseColor.a );\n\n\t#elif DEPTH_PACKING == 3201\n\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\n\t#endif\n\n}\n","customDistanceMaterial.vertex":"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n\n\n\n// /ground/MAT/meshStandardBuilder1/globals1\nvarying vec3 v_POLY_globals1_position;\n\n\n\n\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <batching_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n// removed:\n//\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n// removed:\n//\t#include <begin_vertex>\n\n\n\n\t// /ground/MAT/meshStandardBuilder1/globals1\n\tv_POLY_globals1_position = vec3(position);\n\t\n\t// /ground/MAT/meshStandardBuilder1/output1\n\tvec3 transformed = position;\n\tvec3 objectNormal = normal;\n\t#ifdef USE_TANGENT\n\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t#endif\n\n\n\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\tvWorldPosition = worldPosition.xyz;\n}","customDistanceMaterial.fragment":"\n// INSERT DEFINES\n\n#define DISTANCE\n\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n\n#include <common>\n\n\n\n// /ground/MAT/meshStandardBuilder1/checkers1\n// https://iquilezles.org/articles/checkerfiltering/\nfloat checkers(vec2 p) {\n\tvec2 s = sign(fract(p*.5)-.5);\n\treturn .5 - .5*s.x*s.y;\n}\nfloat checkersGrad( in vec2 p, in vec2 ddx, in vec2 ddy )\n{\n // filter kernel\n vec2 w = max(abs(ddx), abs(ddy)) + 0.01;\n // analytical integral (box filter)\n vec2 i = 2.0*(abs(fract((p-0.5*w)/2.0)-0.5)-abs(fract((p+0.5*w)/2.0)-0.5))/w;\n // xor pattern\n return 0.5 - 0.5*i.x*i.y;\n}\n\n\n\n\n\n\n\n\n// /ground/MAT/meshStandardBuilder1/globals1\nvarying vec3 v_POLY_globals1_position;\n\n\n\n\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <clipping_planes_pars_fragment>\n\nstruct SSSModel {\n\tbool isActive;\n\tvec3 color;\n\tfloat thickness;\n\tfloat power;\n\tfloat scale;\n\tfloat distortion;\n\tfloat ambient;\n\tfloat attenuation;\n};\n\nvoid RE_Direct_Scattering(\n\tconst in IncidentLight directLight,\n\tconst in vec3 geometryNormal,\n\tconst in vec3 geometryViewDir,\n\tconst in SSSModel sssModel,\n\tinout ReflectedLight reflectedLight\n\t){\n\tvec3 scatteringHalf = normalize(directLight.direction + (geometryNormal * sssModel.distortion));\n\tfloat scatteringDot = pow(saturate(dot(geometryViewDir, -scatteringHalf)), sssModel.power) * sssModel.scale;\n\tvec3 scatteringIllu = (scatteringDot + sssModel.ambient) * (sssModel.color * (1.0-sssModel.thickness));\n\treflectedLight.directDiffuse += scatteringIllu * sssModel.attenuation * directLight.color;\n}\n\nvoid main() {\n\n\t#include <clipping_planes_fragment>\n\n\tvec4 diffuseColor = vec4( 1.0 );\n\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\n\n\n\t// /ground/MAT/meshStandardBuilder1/constant1\n\tvec3 v_POLY_constant1_val = vec3(0.24313725490196078, 0.5098039215686274, 0.8549019607843137);\n\t\n\t// /ground/MAT/meshStandardBuilder1/constant2\n\tvec3 v_POLY_constant2_val = vec3(0.047058823529411764, 0.10196078431372549, 0.17647058823529413);\n\t\n\t// /ground/MAT/meshStandardBuilder1/vec3ToFloat1\n\tfloat v_POLY_vec3ToFloat1_x = v_POLY_globals1_position.x;\n\tfloat v_POLY_vec3ToFloat1_z = v_POLY_globals1_position.z;\n\t\n\t// /ground/MAT/meshStandardBuilder1/floatToVec2_1\n\tvec2 v_POLY_floatToVec2_1_vec2 = vec2(v_POLY_vec3ToFloat1_x, v_POLY_vec3ToFloat1_z);\n\t\n\t// /ground/MAT/meshStandardBuilder1/checkers1\n\tvec2 v_POLY_checkers1_coord = v_POLY_floatToVec2_1_vec2*vec2(1.0, 1.0)*1.0;\n\tfloat v_POLY_checkers1_checker = checkersGrad(v_POLY_checkers1_coord, dFdx(v_POLY_checkers1_coord), dFdy(v_POLY_checkers1_coord));\n\t\n\t// /ground/MAT/meshStandardBuilder1/mix1\n\tvec3 v_POLY_mix1_mix = mix(v_POLY_constant1_val, v_POLY_constant2_val, v_POLY_checkers1_checker);\n\t\n\t// /ground/MAT/meshStandardBuilder1/output1\n\tdiffuseColor.xyz = v_POLY_mix1_mix;\n\tfloat POLY_metalness = 1.0;\n\tfloat POLY_roughness = 1.0;\n\tvec3 POLY_emissive = vec3(1.0, 1.0, 1.0);\n\tSSSModel POLY_SSSModel = SSSModel(/*isActive*/false,/*color*/vec3(1.0, 1.0, 1.0), /*thickness*/0.1, /*power*/2.0, /*scale*/16.0, /*distortion*/0.1,/*ambient*/0.4,/*attenuation*/0.8 );\n\n\n\n\n\t// INSERT BODY\n\n\t#include <alphatest_fragment>\n\n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist ); // clamp to [ 0, 1 ]\n\n\tgl_FragColor = packDepthToRGBA( dist );\n\n}\n","customDepthDOFMaterial.vertex":"#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n\n\n\n// /ground/MAT/meshStandardBuilder1/globals1\nvarying vec3 v_POLY_globals1_position;\n\n\n\n\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <uv_vertex>\n\t#include <batching_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n// removed:\n//\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n// removed:\n//\t#include <begin_vertex>\n\n\n\n\t// /ground/MAT/meshStandardBuilder1/globals1\n\tv_POLY_globals1_position = vec3(position);\n\t\n\t// /ground/MAT/meshStandardBuilder1/output1\n\tvec3 transformed = position;\n\tvec3 objectNormal = normal;\n\t#ifdef USE_TANGENT\n\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t#endif\n\n\n\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvHighPrecisionZW = gl_Position.zw;\n}","customDepthDOFMaterial.fragment":"\n// INSERT DEFINES\n\n\n#if DEPTH_PACKING == 3200\n\n\tuniform float opacity;\n\n#endif\n\n#include <common>\n\n\n\n// /ground/MAT/meshStandardBuilder1/checkers1\n// https://iquilezles.org/articles/checkerfiltering/\nfloat checkers(vec2 p) {\n\tvec2 s = sign(fract(p*.5)-.5);\n\treturn .5 - .5*s.x*s.y;\n}\nfloat checkersGrad( in vec2 p, in vec2 ddx, in vec2 ddy )\n{\n // filter kernel\n vec2 w = max(abs(ddx), abs(ddy)) + 0.01;\n // analytical integral (box filter)\n vec2 i = 2.0*(abs(fract((p-0.5*w)/2.0)-0.5)-abs(fract((p+0.5*w)/2.0)-0.5))/w;\n // xor pattern\n return 0.5 - 0.5*i.x*i.y;\n}\n\n\n\n\n\n\n\n\n// /ground/MAT/meshStandardBuilder1/globals1\nvarying vec3 v_POLY_globals1_position;\n\n\n\n\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\n\nvarying vec2 vHighPrecisionZW;\n\nstruct SSSModel {\n\tbool isActive;\n\tvec3 color;\n\tfloat thickness;\n\tfloat power;\n\tfloat scale;\n\tfloat distortion;\n\tfloat ambient;\n\tfloat attenuation;\n};\n\nvoid RE_Direct_Scattering(\n\tconst in IncidentLight directLight,\n\tconst in vec3 geometryNormal,\n\tconst in vec3 geometryViewDir,\n\tconst in SSSModel sssModel,\n\tinout ReflectedLight reflectedLight\n\t){\n\tvec3 scatteringHalf = normalize(directLight.direction + (geometryNormal * sssModel.distortion));\n\tfloat scatteringDot = pow(saturate(dot(geometryViewDir, -scatteringHalf)), sssModel.power) * sssModel.scale;\n\tvec3 scatteringIllu = (scatteringDot + sssModel.ambient) * (sssModel.color * (1.0-sssModel.thickness));\n\treflectedLight.directDiffuse += scatteringIllu * sssModel.attenuation * directLight.color;\n}\n\nvoid main() {\n\n\t#include <clipping_planes_fragment>\n\n\tvec4 diffuseColor = vec4( 1.0 );\n\n\t#if DEPTH_PACKING == 3200\n\n\t\tdiffuseColor.a = opacity;\n\n\t#endif\n\n\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\n\n\n\t// /ground/MAT/meshStandardBuilder1/constant1\n\tvec3 v_POLY_constant1_val = vec3(0.24313725490196078, 0.5098039215686274, 0.8549019607843137);\n\t\n\t// /ground/MAT/meshStandardBuilder1/constant2\n\tvec3 v_POLY_constant2_val = vec3(0.047058823529411764, 0.10196078431372549, 0.17647058823529413);\n\t\n\t// /ground/MAT/meshStandardBuilder1/vec3ToFloat1\n\tfloat v_POLY_vec3ToFloat1_x = v_POLY_globals1_position.x;\n\tfloat v_POLY_vec3ToFloat1_z = v_POLY_globals1_position.z;\n\t\n\t// /ground/MAT/meshStandardBuilder1/floatToVec2_1\n\tvec2 v_POLY_floatToVec2_1_vec2 = vec2(v_POLY_vec3ToFloat1_x, v_POLY_vec3ToFloat1_z);\n\t\n\t// /ground/MAT/meshStandardBuilder1/checkers1\n\tvec2 v_POLY_checkers1_coord = v_POLY_floatToVec2_1_vec2*vec2(1.0, 1.0)*1.0;\n\tfloat v_POLY_checkers1_checker = checkersGrad(v_POLY_checkers1_coord, dFdx(v_POLY_checkers1_coord), dFdy(v_POLY_checkers1_coord));\n\t\n\t// /ground/MAT/meshStandardBuilder1/mix1\n\tvec3 v_POLY_mix1_mix = mix(v_POLY_constant1_val, v_POLY_constant2_val, v_POLY_checkers1_checker);\n\t\n\t// /ground/MAT/meshStandardBuilder1/output1\n\tdiffuseColor.xyz = v_POLY_mix1_mix;\n\tfloat POLY_metalness = 1.0;\n\tfloat POLY_roughness = 1.0;\n\tvec3 POLY_emissive = vec3(1.0, 1.0, 1.0);\n\tSSSModel POLY_SSSModel = SSSModel(/*isActive*/false,/*color*/vec3(1.0, 1.0, 1.0), /*thickness*/0.1, /*power*/2.0, /*scale*/16.0, /*distortion*/0.1,/*ambient*/0.4,/*attenuation*/0.8 );\n\n\n\n\n\t// INSERT BODY\n\t// the new body lines should be added before the alphatest_fragment\n\t// so that alpha is set before (which is really how it would be set if the alphamap_fragment above was used by the material node parameters)\n\n\t#include <alphatest_fragment>\n\n\t#include <logdepthbuf_fragment>\n\n\n\t// Higher precision equivalent of gl_FragCoord.z. This assumes depthRange has been left to its default values.\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\n\t#if DEPTH_PACKING == 3200\n\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), diffuseColor.a );\n\n\t#elif DEPTH_PACKING == 3201\n\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\n\t#endif\n\n}\n"}},"jsFunctionBodies":{"/cameras/actor_hover_highlight":"// insert defines\nclass CustomActorEvaluator extends ActorEvaluator {\n\t// insert members\n\n\t// /cameras/actor_hover_highlight/getObjectAttribute1\n\tv_POLY_getObjectAttribute1_val = computed(() =>\n\t\tgetObjectAttribute(\n\t\t\tthis.object3D,\n\t\t\tthis.v_POLY_constant1_val.value,\n\t\t\t\"Vector3\",\n\t\t\tVAR__getObjectAttribute1_defaultVector3.set(0, 0, 0)\n\t\t)\n\t);\n\n\t// /cameras/actor_hover_highlight/vec3ToColor1\n\tv_POLY_vec3ToColor1_Color = computed(() =>\n\t\tvec3ToColor(VAR__vec3ToColor1_vec3.copy(this.v_POLY_getObjectAttribute1_val.value), VAR__vec3ToColor1__1)\n\t);\n\n\t// /cameras/actor_hover_highlight/multScalar1\n\tv_POLY_multScalar1_val = computed(() =>\n\t\tmultScalarColor(VAR__multScalar1_value.copy(this.v_POLY_vec3ToColor1_Color.value), 2.0, VAR__multScalar1__1)\n\t);\n\n\t// /cameras/actor_hover_highlight/twoWaySwitch1\n\tv_POLY_twoWaySwitch1_val = computed(() =>\n\t\tthis.v_POLY_onObjectHover1_hovered.value\n\t\t\t? VAR__twoWaySwitch1_ifTrue.copy(this.v_POLY_multScalar1_val.value)\n\t\t\t: VAR__twoWaySwitch1_ifFalse.copy(this.v_POLY_vec3ToColor1_Color.value)\n\t);\n\n\t// /cameras/actor_hover_highlight/constant1\n\tv_POLY_constant1_val = { value: \"color\" };\n\n\t// /cameras/actor_hover_highlight/onObjectHover1\n\tv_POLY_onObjectHover1_hovered = ref(false);\n\tv_POLY_onObjectHover1_Intersection = ref(null);\n\n\tconstructor(node, object3D) {\n\t\tsuper(node, object3D);\n\t\t// insert after constructor\n\n\t\t// /cameras/actor_hover_highlight/onObjectHover1\n\t\taddObjectToObjectHoveredCheck(this.object3D, this, {\n\t\t\tpriority: { blockObjectsBehind: true, skipIfObjectsInFront: false },\n\t\t\tcpu: {\n\t\t\t\ttraverseChildren: true,\n\t\t\t\tpointsThreshold: 0.1,\n\t\t\t\tlineThreshold: 0.1,\n\t\t\t\tintersectionRef: this.v_POLY_onObjectHover1_Intersection,\n\t\t\t},\n\t\t\thover: {\n\t\t\t\thoveredStateRef: this.v_POLY_onObjectHover1_hovered,\n\t\t\t\tonHoveredStateChange: this.onObjectHover1.bind(this),\n\t\t\t},\n\t\t});\n\t}\n\t// insert body\n\n\tonObjectHover() {\n\t\tthis.onObjectHover1();\n\t}\n\t// /cameras/actor_hover_highlight/onObjectHover1\n\tonObjectHover1() {\n\t\tthis.setMaterialColor1(0);\n\t}\n\n\t// /cameras/actor_hover_highlight/setMaterialColor1\n\tsetMaterialColor1() {\n\t\tsetMaterialColor(\n\t\t\tthis.object3D.material,\n\t\t\tVAR__setMaterialColor1_color.copy(this.v_POLY_twoWaySwitch1_val.value),\n\t\t\t1.0\n\t\t);\n\t\tthis.setViewer1(0);\n\t}\n\n\t// /cameras/actor_hover_highlight/setViewer1\n\tsetViewer1() {\n\t\tsetViewer(\"active\", this.v_POLY_onObjectHover1_hovered.value);\n\t}\n}\nreturn CustomActorEvaluator;\n","/cameras/actor_update_car_body_color":"// insert defines\nclass CustomActorEvaluator extends ActorEvaluator {\n\t// insert members\n\n\t// /cameras/actor_update_car_body_color/getObjectAttribute1\n\tv_POLY_getObjectAttribute1_val = computed(() =>\n\t\tgetObjectAttribute(\n\t\t\tthis.object3D,\n\t\t\tthis.v_POLY_constant2_val.value,\n\t\t\t\"Vector3\",\n\t\t\tVAR__getObjectAttribute1_defaultVector3.set(0, 0, 0)\n\t\t)\n\t);\n\n\t// /cameras/actor_update_car_body_color/vec3ToColor1\n\tv_POLY_vec3ToColor1_Color = computed(() =>\n\t\tvec3ToColor(VAR__vec3ToColor1_vec3.copy(this.v_POLY_getObjectAttribute1_val.value), VAR__vec3ToColor1__1)\n\t);\n\n\t// /cameras/actor_update_car_body_color/getMaterial1\n\tv_POLY_getMaterial1_Material = computed(() => getMaterial(\"/geo1/decompose1/MAT/meshStandard__export_prep_mesh_0\"));\n\n\t// /cameras/actor_update_car_body_color/constant2\n\tv_POLY_constant2_val = { value: \"color\" };\n\n\t// /cameras/actor_update_car_body_color/onObjectClick1\n\tv_POLY_onObjectClick1_Intersection = ref(null);\n\n\tconstructor(node, object3D) {\n\t\tsuper(node, object3D);\n\t\t// insert after constructor\n\n\t\t// /cameras/actor_update_car_body_color/onObjectClick1\n\t\taddObjectToObjectClickCheck(this.object3D, this, {\n\t\t\tpriority: { blockObjectsBehind: true, skipIfObjectsInFront: false },\n\t\t\tcpu: {\n\t\t\t\ttraverseChildren: true,\n\t\t\t\tpointsThreshold: 0.1,\n\t\t\t\tlineThreshold: 0.1,\n\t\t\t\tintersectionRef: this.v_POLY_onObjectClick1_Intersection,\n\t\t\t},\n\t\t\tclick: { maxCursorMoveDistance: 0.05, maxDuration: 200.0, callback: this.onObjectClick1.bind(this) },\n\t\t\tconfig: { button: { left: true, middle: true, right: true }, modifier: { ctrl: 1.0, shift: 1.0, alt: 1.0 } },\n\t\t});\n\t}\n\t// insert body\n\n\tonObjectClick() {\n\t\tthis.onObjectClick1();\n\t}\n\t// /cameras/actor_update_car_body_color/onObjectClick1\n\tonObjectClick1() {\n\t\tthis.setMaterialColor1(0);\n\t}\n\n\t// /cameras/actor_update_car_body_color/setMaterialColor1\n\tsetMaterialColor1() {\n\t\tsetMaterialColor(\n\t\t\tthis.v_POLY_getMaterial1_Material.value,\n\t\t\tVAR__setMaterialColor1_color.copy(this.v_POLY_vec3ToColor1_Color.value),\n\t\t\t1.0\n\t\t);\n\t}\n}\nreturn CustomActorEvaluator;\n"}}
Code editor
{"multiple_panel":{"split_ratio":0.5,"split_panel0":{"split_ratio":0.6002317497103129,"split_panel0":{"panelTypes":["viewer"],"currentPanelIndex":0,"panel_data":{"camera":"/cameras/cameras:sopGroup/perspectiveCamera1","isViewerInitLayoutData":true,"linkIndex":1,"overlayedNetwork":{"allowed":false,"displayed":false}}},"split_panel1":{"panelTypes":["params"],"currentPanelIndex":0,"panel_data":{"active_folder":300,"linkIndex":1}},"split_mode":"vertical"},"split_panel1":{"panelTypes":["network","params","viewer"],"currentPanelIndex":0,"panel_data":{"camera":{"position":{"x":-307.4743744170268,"y":-261.8630608365323},"zoom":0.8632221069335931},"history":{"2":{"position":{"x":-27.454478224083466,"y":203.59310979070793},"zoom":1.0222221069335933},"36":{"position":{"x":-62.39132266270179,"y":-444.56524497394855},"zoom":1.0222221069335933},"294":{"position":{"x":-544.2940111976915,"y":-405.2671116671756},"zoom":0.4942221069335929},"379":{"position":{"x":-530.2312432447859,"y":171.46044629170825},"zoom":0.644222106933593},"394":{"position":{"x":0,"y":0},"zoom":0.644222106933593},"397":{"position":{"x":-424.7063520960182,"y":-63.45968275146147},"zoom":0.7112221069335931},"1508":{"position":{"x":-252.39133281311484,"y":-231.84785223530318},"zoom":1.0222221069335933},"2071":{"position":{"x":-307.4743744170268,"y":-261.8630608365323},"zoom":0.8632221069335931},"2327":{"position":{"x":-25.07810538816409,"y":-129.61077436554552},"zoom":0.7712221069335932}},"paramsDisplayed":false,"linkIndex":1}},"split_mode":"horizontal"},"currentNodes":["/cameras/actor_update_car_body_color","/","/","/","/","/","/","/"],"navigationHistory":{"nodePaths":{"1":["/geo1","/","/cameras","/cameras/actor_update_car_body_color","/cameras","/cameras/actor_update_car_body_color","/cameras","/cameras/actor_hover_highlight","/cameras","/cameras/actor_hover_highlight","/cameras","/cameras/actor_update_car_body_color","/cameras","/cameras/actor_hover_highlight","/cameras","/cameras/actor_update_car_body_color","/cameras","/cameras/actor_update_car_body_color","/cameras","/cameras/actor_update_car_body_color"],"2":["/"],"3":["/"],"4":["/"],"5":["/"],"6":["/"],"7":["/"],"8":["/"]},"index":{"1":19,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0}},"fullscreenPanelId":null,"saveOptions":{"checkRemoteAssetsUse":true,"minimizeFilesCount":false},"paramsModal":[]}
Used nodes
cop/envMap;cop/image;cop/imageEXR;event/cameraOrbitControls;mat/meshStandard;mat/meshStandardBuilder;obj/copNetwork;obj/geo;sop/actor;sop/attribCreate;sop/box;sop/cameraControls;sop/copNetwork;sop/decompose;sop/fileGLTF;sop/hemisphereLight;sop/hierarchy;sop/material;sop/materialsNetwork;sop/merge;sop/perspectiveCamera;sop/polarTransform;sop/setChildren;sop/sphere;sop/spotLight;sop/subnetInput;sop/subnetOutput;sop/transform
Used operations
Used modules
Used assemblers
GL_MESH_STANDARD;JS_ACTOR
Used integrations
[]
Used assets
Nodes map
{"/geo1":"obj/geo","/geo1/decompose1":"sop/decompose","/geo1/decompose1/COP":"sop/copNetwork","/geo1/decompose1/MAT":"sop/materialsNetwork","/geo1/decompose1/MAT/meshStandard__export_prep_mesh_0":"mat/meshStandard","/geo1/decompose1/MAT/meshStandard__export_prep_mesh_0_1":"mat/meshStandard","/geo1/decompose1/MAT/meshStandard__export_prep_mesh_0_2":"mat/meshStandard","/geo1/decompose1/MAT/meshStandard__export_prep_mesh_0_3":"mat/meshStandard","/geo1/decompose1/MAT/meshStandard__export_prep_mesh_0_4":"mat/meshStandard","/geo1/decompose1/material__export_prep_mesh_0":"sop/material","/geo1/decompose1/material__export_prep_mesh_0_1":"sop/material","/geo1/decompose1/material__export_prep_mesh_0_2":"sop/material","/geo1/decompose1/material__export_prep_mesh_0_3":"sop/material","/geo1/decompose1/material__export_prep_mesh_0_4":"sop/material","/geo1/decompose1/subnetInput1":"sop/subnetInput","/geo1/decompose1/subnetOutput1":"sop/subnetOutput","/geo1/fileGLTF1":"sop/fileGLTF","/ground":"obj/geo","/ground/material1":"sop/material","/ground/MAT":"sop/materialsNetwork","/ground/MAT/meshStandardBuilder1":"mat/meshStandardBuilder","/ground/box1":"sop/box","/COP":"obj/copNetwork","/COP/envMap":"cop/envMap","/COP/imageEnv":"cop/imageEXR","/COP/image1":"cop/image","/lights":"obj/geo","/lights/hemisphereLight1":"sop/hemisphereLight","/lights/spotLight1":"sop/spotLight","/lights/polarTransform1":"sop/polarTransform","/lights/merge1":"sop/merge","/cameras":"obj/geo","/cameras/perspectiveCamera1":"sop/perspectiveCamera","/cameras/cameraControls1":"sop/cameraControls","/cameras/cameraControls1/cameraOrbitControls1":"event/cameraOrbitControls","/cameras/setChildren1":"sop/setChildren","/cameras/sphere1":"sop/sphere","/cameras/material1":"sop/material","/cameras/MAT":"sop/materialsNetwork","/cameras/MAT/meshStandard_RED":"mat/meshStandard","/cameras/MAT/meshStandard_GREEN":"mat/meshStandard","/cameras/MAT/meshStandard_BLUE":"mat/meshStandard","/cameras/material2":"sop/material","/cameras/material3":"sop/material","/cameras/merge1":"sop/merge","/cameras/transform1":"sop/transform","/cameras/transform2":"sop/transform","/cameras/transform3":"sop/transform","/cameras/hierarchy1":"sop/hierarchy","/cameras/transform4":"sop/transform","/cameras/actor_hover_highlight":"sop/actor","/cameras/attribCreate1":"sop/attribCreate","/cameras/attribCreate2":"sop/attribCreate","/cameras/attribCreate3":"sop/attribCreate","/cameras/actor_update_car_body_color":"sop/actor"}
Js version
Editor version
Engine version
Name
*
Code
{"properties":{"frame":395,"maxFrame":600,"maxFrameLocked":false,"realtimeState":true,"mainCameraPath":"/cameras/cameras:sopGroup/perspectiveCamera1","versions":{"polygonjs":"1.5.75"}},"root":{"type":"root","nodes":{"geo1":{"type":"geo","nodes":{"decompose1":{"type":"decompose","nodes":{"COP":{"type":"copNetwork"},"MAT":{"type":"materialsNetwork","nodes":{"meshStandard__export_prep_mesh_0":{"type":"meshStandard","params":{"color":{"raw_input":[0,1,0.3843137254901961],"overriden_options":{"conversion":"no conversion"}},"useVertexColors":1,"emissive":{"overriden_options":{"conversion":"no conversion"}},"useEnvMap":true,"envMap":"../../../../COP/envMap","normalScale":[1,-1],"metalness":0.88,"roughness":0.1}},"meshStandard__export_prep_mesh_0_1":{"type":"meshStandard","params":{"color":{"raw_input":[0.02732089163382382,0.009134058699157796,0.3231432091022285],"overriden_options":{"conversion":"no conversion"}},"useVertexColors":1,"emissive":{"overriden_options":{"conversion":"no conversion"}},"normalScale":[1,-1],"roughness":-0.151999965}},"meshStandard__export_prep_mesh_0_2":{"type":"meshStandard","params":{"color":{"raw_input":[0.588235319,0.588235319,0.588235319],"overriden_options":{"conversion":"no conversion"}},"useVertexColors":1,"emissive":{"overriden_options":{"conversion":"no conversion"}},"normalScale":[1,-1],"roughness":-0.151999965}},"meshStandard__export_prep_mesh_0_3":{"type":"meshStandard","params":{"color":{"raw_input":[0.00999999978,0.00999999978,0.00999999978],"overriden_options":{"conversion":"no conversion"}},"useVertexColors":1,"emissive":{"overriden_options":{"conversion":"no conversion"}},"normalScale":[1,-1],"roughness":-0.151999965}},"meshStandard__export_prep_mesh_0_4":{"type":"meshStandard","params":{"color":{"raw_input":[0.00999999978,0.00999999978,0.00999999978],"overriden_options":{"conversion":"no conversion"}},"useVertexColors":1,"emissive":{"overriden_options":{"conversion":"no conversion"}},"normalScale":[1,-1],"roughness":-0.151999965}}}},"material__export_prep_mesh_0":{"type":"material","params":{"group":"/export_prep/mesh_0","material":"../MAT/meshStandard__export_prep_mesh_0"},"inputs":["subnetInput1"]},"material__export_prep_mesh_0_1":{"type":"material","params":{"group":"/export_prep/mesh_0_1","material":"../MAT/meshStandard__export_prep_mesh_0_1"},"inputs":["material__export_prep_mesh_0"]},"material__export_prep_mesh_0_2":{"type":"material","params":{"group":"/export_prep/mesh_0_2","material":"../MAT/meshStandard__export_prep_mesh_0_2"},"inputs":["material__export_prep_mesh_0_1"]},"material__export_prep_mesh_0_3":{"type":"material","params":{"group":"/export_prep/mesh_0_3","material":"../MAT/meshStandard__export_prep_mesh_0_3"},"inputs":["material__export_prep_mesh_0_2"]},"material__export_prep_mesh_0_4":{"type":"material","params":{"group":"/export_prep/mesh_0_4","material":"../MAT/meshStandard__export_prep_mesh_0_4"},"inputs":["material__export_prep_mesh_0_3"]},"subnetInput1":{"type":"subnetInput"},"subnetOutput1":{"type":"subnetOutput","inputs":["material__export_prep_mesh_0_4"],"flags":{"display":true}}},"inputs":["fileGLTF1"],"flags":{"display":true}},"fileGLTF1":{"type":"fileGLTF","params":{"url":"https://raw.githubusercontent.com/polygonjs/polygonjs-assets/master/models/car.glb"}}},"params":{"CADLinearTolerance":{"overriden_options":{"callback":"{}"}},"CADAngularTolerance":{"overriden_options":{"callback":"{}"}},"CADCurveAbscissa":{"overriden_options":{"callback":"{}"}},"CADCurveTolerance":{"overriden_options":{"callback":"{}"}},"CADDisplayEdges":{"overriden_options":{"callback":"{}"}},"CADEdgesColor":{"overriden_options":{"callback":"{}"}},"CADDisplayMeshes":{"overriden_options":{"callback":"{}"}},"CADMeshesColor":{"overriden_options":{"callback":"{}"}},"CADWireframe":{"overriden_options":{"callback":"{}"}},"CSGFacetAngle":{"overriden_options":{"callback":"{}"}},"CSGLinesColor":{"overriden_options":{"callback":"{}"}},"CSGMeshesColor":{"overriden_options":{"callback":"{}"}},"CSGWireframe":{"overriden_options":{"callback":"{}"}},"QUADTriangles":{"overriden_options":{"callback":"{}"}},"QUADWireframe":{"overriden_options":{"callback":"{}"}},"TetScale":{"overriden_options":{"callback":"{}"}},"TetDisplayLines":{"overriden_options":{"callback":"{}"}},"TetDisplaySharedFaces":{"overriden_options":{"callback":"{}"}},"TetDisplayPoints":{"overriden_options":{"callback":"{}"}},"TetDisplayCenter":{"overriden_options":{"callback":"{}"}},"TetDisplaySphere":{"overriden_options":{"callback":"{}"}}},"flags":{"display":true}},"ground":{"type":"geo","nodes":{"material1":{"type":"material","params":{"material":"../MAT/meshStandardBuilder1"},"inputs":["box1"],"flags":{"display":true}},"MAT":{"type":"materialsNetwork","nodes":{"meshStandardBuilder1":{"type":"meshStandardBuilder","nodes":{"globals1":{"type":"globals"},"output1":{"type":"output","inputs":[null,null,{"index":2,"inputName":"color","node":"mix1","output":"mix"}]},"vec3ToFloat1":{"type":"vec3ToFloat","params":{"vec":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"vec","node":"globals1","output":"position"}]},"floatToVec2_1":{"type":"floatToVec2","params":{"x":{"overriden_options":{}},"y":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"x","node":"vec3ToFloat1","output":"x"},{"index":1,"inputName":"y","node":"vec3ToFloat1","output":"z"}]},"checkers1":{"type":"checkers","params":{"uv":{"overriden_options":{}},"freq":{"overriden_options":{}},"freqMult":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"uv","node":"floatToVec2_1","output":"vec2"}]},"mix1":{"type":"mix","params":{"value0":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false}},"value1":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":false}},"blend":{"type":"float","default_value":0.5,"options":{"spare":true,"editable":false}}},"inputs":[{"index":0,"inputName":"value0","node":"constant1","output":"val"},{"index":1,"inputName":"value1","node":"constant2","output":"val"},{"index":2,"inputName":"blend","node":"checkers1","output":"checker"}],"connection_points":{"in":[{"name":"value0","type":"vec3"},{"name":"value1","type":"vec3"},{"name":"blend","type":"float"}],"out":[{"name":"mix","type":"vec3"}]}},"constant1":{"type":"constant","params":{"type":4,"color":[0.24313725490196078,0.5098039215686274,0.8549019607843137],"asColor":true},"connection_points":{"in":[],"out":[{"name":"val","type":"vec3"}]}},"constant2":{"type":"constant","params":{"type":4,"color":[0.047058823529411764,0.10196078431372549,0.17647058823529413],"asColor":true},"connection_points":{"in":[],"out":[{"name":"val","type":"vec3"}]}}},"persisted_config":{"material":{"metadata":{"version":4.6,"type":"Material","generator":"Material.toJSON"},"uuid":"/ground/MAT/meshStandardBuilder1-main","type":"MeshStandardMaterial","color":16777215,"roughness":1,"metalness":0,"emissive":0,"envMapIntensity":1,"blendColor":0,"fog":false},"onBeforeCompileDataJSONWithoutShaders":{"paramConfigs":[],"timeDependent":false,"resolutionDependent":false,"raymarchingLightsWorldCoordsDependent":false},"customMaterials":{"customDepthMaterial":{"material":{"metadata":{"version":4.6,"type":"Material","generator":"Material.toJSON"},"uuid":"/ground/MAT/meshStandardBuilder1-customDepthMaterial","type":"MeshDepthMaterial","name":"customDepthMaterial","side":1,"blendColor":0,"depthPacking":3201},"onBeforeCompileDataJSONWithoutShaders":{"paramConfigs":[],"timeDependent":false,"resolutionDependent":false,"raymarchingLightsWorldCoordsDependent":false}},"customDistanceMaterial":{"material":{"metadata":{"version":4.6,"type":"Material","generator":"Material.toJSON"},"uuid":"/ground/MAT/meshStandardBuilder1-customDistanceMaterial","type":"MeshDistanceMaterial","name":"customDistanceMaterial","blendColor":0},"onBeforeCompileDataJSONWithoutShaders":{"paramConfigs":[],"timeDependent":false,"resolutionDependent":false,"raymarchingLightsWorldCoordsDependent":false}},"customDepthDOFMaterial":{"material":{"metadata":{"version":4.6,"type":"Material","generator":"Material.toJSON"},"uuid":"/ground/MAT/meshStandardBuilder1-customDepthDOFMaterial","type":"MeshDepthMaterial","name":"customDepthDOFMaterial","blendColor":0,"depthPacking":3200},"onBeforeCompileDataJSONWithoutShaders":{"paramConfigs":[],"timeDependent":false,"resolutionDependent":false,"raymarchingLightsWorldCoordsDependent":false}}}}}}},"box1":{"type":"box","params":{"sizes":[9.98,1,9.98],"center":[0,-0.5,0]}}},"params":{"CADLinearTolerance":{"overriden_options":{"callback":"{}"}},"CADAngularTolerance":{"overriden_options":{"callback":"{}"}},"CADCurveAbscissa":{"overriden_options":{"callback":"{}"}},"CADCurveTolerance":{"overriden_options":{"callback":"{}"}},"CADDisplayEdges":{"overriden_options":{"callback":"{}"}},"CADEdgesColor":{"overriden_options":{"callback":"{}"}},"CADDisplayMeshes":{"overriden_options":{"callback":"{}"}},"CADMeshesColor":{"overriden_options":{"callback":"{}"}},"CADWireframe":{"overriden_options":{"callback":"{}"}},"CSGFacetAngle":{"overriden_options":{"callback":"{}"}},"CSGLinesColor":{"overriden_options":{"callback":"{}"}},"CSGMeshesColor":{"overriden_options":{"callback":"{}"}},"CSGWireframe":{"overriden_options":{"callback":"{}"}},"QUADTriangles":{"overriden_options":{"callback":"{}"}},"QUADWireframe":{"overriden_options":{"callback":"{}"}},"TetScale":{"overriden_options":{"callback":"{}"}},"TetDisplayLines":{"overriden_options":{"callback":"{}"}},"TetDisplaySharedFaces":{"overriden_options":{"callback":"{}"}},"TetDisplayPoints":{"overriden_options":{"callback":"{}"}},"TetDisplayCenter":{"overriden_options":{"callback":"{}"}},"TetDisplaySphere":{"overriden_options":{"callback":"{}"}}},"flags":{"display":true}},"COP":{"type":"copNetwork","nodes":{"envMap":{"type":"envMap","inputs":["imageEnv"]},"imageEnv":{"type":"imageEXR","params":{"tminFilter":true,"tmagFilter":true,"tanisotropy":true,"useRendererMaxAnisotropy":true}},"image1":{"type":"image"}}},"lights":{"type":"geo","nodes":{"hemisphereLight1":{"type":"hemisphereLight","params":{"intensity":0.52}},"spotLight1":{"type":"spotLight","params":{"decay":0.1,"distance":10,"castShadow":1}},"polarTransform1":{"type":"polarTransform","params":{"center":[0,0.7,0],"latitude":25.2,"depth":3},"inputs":["spotLight1"]},"merge1":{"type":"merge","inputs":["hemisphereLight1","polarTransform1"],"flags":{"display":true}}},"params":{"CADLinearTolerance":{"overriden_options":{"callback":"{}"}},"CADAngularTolerance":{"overriden_options":{"callback":"{}"}},"CADCurveAbscissa":{"overriden_options":{"callback":"{}"}},"CADCurveTolerance":{"overriden_options":{"callback":"{}"}},"CADDisplayEdges":{"overriden_options":{"callback":"{}"}},"CADEdgesColor":{"overriden_options":{"callback":"{}"}},"CADDisplayMeshes":{"overriden_options":{"callback":"{}"}},"CADMeshesColor":{"overriden_options":{"callback":"{}"}},"CADWireframe":{"overriden_options":{"callback":"{}"}},"CSGFacetAngle":{"overriden_options":{"callback":"{}"}},"CSGLinesColor":{"overriden_options":{"callback":"{}"}},"CSGMeshesColor":{"overriden_options":{"callback":"{}"}},"CSGWireframe":{"overriden_options":{"callback":"{}"}},"QUADTriangles":{"overriden_options":{"callback":"{}"}},"QUADWireframe":{"overriden_options":{"callback":"{}"}},"TetScale":{"overriden_options":{"callback":"{}"}},"TetDisplayLines":{"overriden_options":{"callback":"{}"}},"TetDisplaySharedFaces":{"overriden_options":{"callback":"{}"}},"TetDisplayPoints":{"overriden_options":{"callback":"{}"}},"TetDisplayCenter":{"overriden_options":{"callback":"{}"}},"TetDisplaySphere":{"overriden_options":{"callback":"{}"}}},"flags":{"display":true}},"cameras":{"type":"geo","nodes":{"perspectiveCamera1":{"type":"perspectiveCamera","params":{"position":[3.3,3.3,3.3]}},"cameraControls1":{"type":"cameraControls","nodes":{"cameraOrbitControls1":{"type":"cameraOrbitControls","params":{"target":[-0.28284988228698366,0.3477113632481661,-0.001030848390162673]}}},"params":{"node":"cameraOrbitControls1"},"inputs":["perspectiveCamera1"]},"setChildren1":{"type":"setChildren","inputs":["cameraControls1","transform4"],"flags":{"display":true}},"sphere1":{"type":"sphere","params":{"radius":0.14}},"material1":{"type":"material","params":{"material":"../MAT/meshStandard_RED"},"inputs":["sphere1"]},"MAT":{"type":"materialsNetwork","nodes":{"meshStandard_RED":{"type":"meshStandard","params":{"color":[1,0,0]}},"meshStandard_GREEN":{"type":"meshStandard","params":{"color":[0.001214107934117647,0.5775804404214573,0.04970656597728775]}},"meshStandard_BLUE":{"type":"meshStandard","params":{"color":[0.031896033067374104,0.21223075740342195,0.6444796819634361]}}}},"material2":{"type":"material","params":{"material":"../MAT/meshStandard_GREEN"},"inputs":["sphere1"]},"material3":{"type":"material","params":{"material":"../MAT/meshStandard_BLUE"},"inputs":["sphere1"]},"merge1":{"type":"merge","inputs":["attribCreate1","attribCreate2","attribCreate3"]},"transform1":{"type":"transform","params":{"applyOn":1,"t":[-0.353,0,0]},"inputs":["material1"]},"transform2":{"type":"transform","params":{"applyOn":1},"inputs":["material2"]},"transform3":{"type":"transform","params":{"applyOn":1,"t":["-ch(\"../transform1/tx\")",0,0]},"inputs":["material3"]},"hierarchy1":{"type":"hierarchy","inputs":["actor_update_car_body_color"]},"transform4":{"type":"transform","params":{"applyOn":1,"t":[0,-0.48000000000000004,-1.5]},"inputs":["hierarchy1"]},"actor_hover_highlight":{"type":"actor","nodes":{"onObjectHover1":{"type":"onObjectHover","maxInputsCount":6},"getObjectAttribute1":{"type":"getObjectAttribute","params":{"type":6,"attribName":{"type":"string","default_value":"","options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false},"raw_input":"getObjectAttribute1"},"defaultVector3":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}}},"maxInputsCount":3,"inputs":[null,{"index":1,"inputName":"attribName","node":"constant1","output":"val"}],"connection_points":{"in":[{"name":"Object3D","type":"Object3D","isArray":false},{"name":"attribName","type":"string","isArray":false},{"name":"defaultVector3","type":"Vector3","isArray":false}],"out":[{"name":"val","type":"Vector3","isArray":false}]}},"constant1":{"type":"constant","params":{"type":4,"string":"color"},"connection_points":{"in":[],"out":[{"name":"val","type":"string","isArray":false}]}},"multScalar1":{"type":"multScalar","params":{"value":{"type":"color","default_value":[1,1,1],"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}},"mult":{"type":"float","default_value":1,"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false},"raw_input":2}},"inputs":[{"index":0,"inputName":"value","node":"vec3ToColor1","output":"Color"}],"connection_points":{"in":[{"name":"value","type":"Color","isArray":false},{"name":"mult","type":"float","isArray":false}],"out":[{"name":"val","type":"Color","isArray":false}]}},"twoWaySwitch1":{"type":"twoWaySwitch","params":{"condition":{"type":"boolean","default_value":false,"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false}},"ifTrue":{"type":"color","default_value":[1,1,1],"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false},"raw_input":[0,0,0]},"ifFalse":{"type":"color","default_value":[1,1,1],"options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false},"raw_input":[0,0,0]}},"inputs":[{"index":0,"inputName":"condition","node":"onObjectHover1","output":"hovered"},{"index":1,"inputName":"ifTrue","node":"multScalar1","output":"val"},{"index":2,"inputName":"ifFalse","node":"vec3ToColor1","output":"Color"}],"connection_points":{"in":[{"name":"condition","type":"boolean","isArray":false},{"name":"ifTrue","type":"Color","isArray":false},{"name":"ifFalse","type":"Color","isArray":false}],"out":[{"name":"val","type":"Color","isArray":false}]}},"setMaterialColor1":{"type":"setMaterialColor","params":{"color":{"overriden_options":{}},"lerp":{"overriden_options":{}}},"maxInputsCount":4,"inputs":[{"index":0,"inputName":"trigger","node":"onObjectHover1","output":"trigger"},null,{"index":2,"inputName":"color","node":"twoWaySwitch1","output":"val"}]},"setViewer1":{"type":"setViewer","params":{"className":{"overriden_options":{}},"set":{"overriden_options":{}}},"maxInputsCount":3,"inputs":[{"index":0,"inputName":"trigger","node":"setMaterialColor1","output":"trigger"},null,{"index":2,"inputName":"set","node":"onObjectHover1","output":"hovered"}]},"vec3ToColor1":{"type":"vec3ToColor","params":{"vec3":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"vec3","node":"getObjectAttribute1","output":"val"}]}},"inputs":["merge1"],"persisted_config":{"variableNames":["VAR__getObjectAttribute1_defaultVector3","VAR__vec3ToColor1_vec3","VAR__vec3ToColor1__1","VAR__multScalar1_value","VAR__multScalar1__1","VAR__twoWaySwitch1_ifTrue","VAR__twoWaySwitch1_ifFalse","VAR__setMaterialColor1_color"],"variables":[{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Color","data":[1,1,1]},{"type":"Color","data":[1,1,1]},{"type":"Color","data":[1,1,1]},{"type":"Color","data":[1,1,1]},{"type":"Color","data":[1,1,1]},{"type":"Color","data":[1,1,1]}],"functionNames":["getObjectAttribute","vec3ToColor","multScalarColor","addObjectToObjectHoveredCheck","setMaterialColor","setViewer"],"serializedParamConfigs":[],"eventDatas":[{"type":"pointermove","emitter":"canvas","jsType":"onObjectHover"}]}},"attribCreate1":{"type":"attribCreate","params":{"class":3,"name":"color","size":3,"value3":[1,0,0]},"inputs":["transform1"]},"attribCreate2":{"type":"attribCreate","params":{"class":3,"name":"color","size":3,"value3":[0,1,0]},"inputs":["transform2"]},"attribCreate3":{"type":"attribCreate","params":{"class":3,"name":"color","size":3,"value3":[0,0,1]},"inputs":["transform3"]},"actor_update_car_body_color":{"type":"actor","nodes":{"onObjectClick1":{"type":"onObjectClick","maxInputsCount":14},"getMaterial1":{"type":"getMaterial","params":{"node":"/geo1/decompose1/MAT/meshStandard__export_prep_mesh_0"}},"setMaterialColor1":{"type":"setMaterialColor","params":{"color":{"overriden_options":{}},"lerp":{"overriden_options":{}}},"maxInputsCount":4,"inputs":[{"index":0,"inputName":"trigger","node":"onObjectClick1","output":"trigger"},{"index":1,"inputName":"Material","node":"getMaterial1","output":"Material"},{"index":2,"inputName":"color","node":"vec3ToColor1","output":"Color"}]},"getObjectAttribute1":{"type":"getObjectAttribute","params":{"type":6,"attribName":{"type":"string","default_value":"","options":{"spare":true,"editable":false,"computeOnDirty":true,"dependentOnFoundParam":false},"raw_input":"getObjectAttribute1","overriden_options":{}},"defaultVector3":{"type":"vector3","default_value":[0,0,0],"options":{"spare":true,"editable":true,"computeOnDirty":true,"dependentOnFoundParam":false}}},"maxInputsCount":3,"inputs":[null,{"index":1,"inputName":"attribName","node":"constant2","output":"val"}],"connection_points":{"in":[{"name":"Object3D","type":"Object3D","isArray":false},{"name":"attribName","type":"string","isArray":false},{"name":"defaultVector3","type":"Vector3","isArray":false}],"out":[{"name":"val","type":"Vector3","isArray":false}]}},"constant2":{"type":"constant","params":{"type":4,"string":"color"},"connection_points":{"in":[],"out":[{"name":"val","type":"string","isArray":false}]}},"vec3ToColor1":{"type":"vec3ToColor","params":{"vec3":{"overriden_options":{}}},"inputs":[{"index":0,"inputName":"vec3","node":"getObjectAttribute1","output":"val"}]}},"inputs":["actor_hover_highlight"],"persisted_config":{"variableNames":["VAR__getObjectAttribute1_defaultVector3","VAR__vec3ToColor1_vec3","VAR__vec3ToColor1__1","VAR__setMaterialColor1_color"],"variables":[{"type":"Vector3","data":[0,0,0]},{"type":"Vector3","data":[0,0,0]},{"type":"Color","data":[1,1,1]},{"type":"Color","data":[1,1,1]}],"functionNames":["getObjectAttribute","vec3ToColor","getMaterial","addObjectToObjectClickCheck","setMaterialColor"],"serializedParamConfigs":[],"eventDatas":[{"type":"pointerdown","emitter":"canvas","jsType":"onPointerdown"},{"type":"pointerup","emitter":"canvas","jsType":"onObjectPointerup"}]}}},"params":{"CADLinearTolerance":{"overriden_options":{"callback":"{}"}},"CADAngularTolerance":{"overriden_options":{"callback":"{}"}},"CADCurveAbscissa":{"overriden_options":{"callback":"{}"}},"CADCurveTolerance":{"overriden_options":{"callback":"{}"}},"CADDisplayEdges":{"overriden_options":{"callback":"{}"}},"CADEdgesColor":{"overriden_options":{"callback":"{}"}},"CADDisplayMeshes":{"overriden_options":{"callback":"{}"}},"CADMeshesColor":{"overriden_options":{"callback":"{}"}},"CADWireframe":{"overriden_options":{"callback":"{}"}},"CSGFacetAngle":{"overriden_options":{"callback":"{}"}},"CSGLinesColor":{"overriden_options":{"callback":"{}"}},"CSGMeshesColor":{"overriden_options":{"callback":"{}"}},"CSGWireframe":{"overriden_options":{"callback":"{}"}},"QUADTriangles":{"overriden_options":{"callback":"{}"}},"QUADWireframe":{"overriden_options":{"callback":"{}"}},"TetScale":{"overriden_options":{"callback":"{}"}},"TetDisplayLines":{"overriden_options":{"callback":"{}"}},"TetDisplaySharedFaces":{"overriden_options":{"callback":"{}"}},"TetDisplayPoints":{"overriden_options":{"callback":"{}"}},"TetDisplayCenter":{"overriden_options":{"callback":"{}"}},"TetDisplaySphere":{"overriden_options":{"callback":"{}"}}},"flags":{"display":true}}},"params":{"mainCameraPath":"/cameras/cameras:sopGroup/perspectiveCamera1"}},"ui":{"nodes":{"geo1":{"pos":[-50,-350],"nodes":{"decompose1":{"pos":[-100,300],"comment":"Clicking on the **decompose** button will create material nodes for each material imported by the file node above.\\n\\nThis will then allow you to edit the materials separately, giving you control on how you want this asset to look into your scene.\\n\\nThis is much more convenient than having to re-export the asset.","selection":["MAT"],"nodes":{"COP":{"pos":[0,0]},"MAT":{"pos":[200,0],"nodes":{"meshStandard__export_prep_mesh_0":{"pos":[0,-100]},"meshStandard__export_prep_mesh_0_1":{"pos":[200,150]},"meshStandard__export_prep_mesh_0_2":{"pos":[400,-100]},"meshStandard__export_prep_mesh_0_3":{"pos":[600,100]},"meshStandard__export_prep_mesh_0_4":{"pos":[800,-50]}}},"material__export_prep_mesh_0":{"pos":[400,-1000]},"material__export_prep_mesh_0_1":{"pos":[400,-800]},"material__export_prep_mesh_0_2":{"pos":[400,-600]},"material__export_prep_mesh_0_3":{"pos":[400,-400]},"material__export_prep_mesh_0_4":{"pos":[400,-200]},"subnetInput1":{"pos":[400,-1200]},"subnetOutput1":{"pos":[400,0]}}},"fileGLTF1":{"pos":[-100,150]}}},"ground":{"pos":[-50,-450],"nodes":{"material1":{"pos":[0,300]},"MAT":{"pos":[-200,300],"nodes":{"meshStandardBuilder1":{"pos":[0,200],"nodes":{"globals1":{"pos":[-450,0]},"output1":{"pos":[400,0]},"vec3ToFloat1":{"pos":[-200,200]},"floatToVec2_1":{"pos":[-100,200]},"checkers1":{"pos":[50,200]},"mix1":{"pos":[250,0]},"constant1":{"pos":[50,-150]},"constant2":{"pos":[0,0]}}}}},"box1":{"pos":[0,100]}}},"COP":{"pos":[-300,-50],"selection":["image1"],"nodes":{"envMap":{"pos":[50,250]},"imageEnv":{"pos":[50,100]},"image1":{"pos":[-200,100]}}},"lights":{"pos":[-50,-250],"selection":["hemisphereLight1"],"nodes":{"hemisphereLight1":{"pos":[50,-50]},"spotLight1":{"pos":[300,-50]},"polarTransform1":{"pos":[300,150]},"merge1":{"pos":[100,300]}}},"cameras":{"pos":[-50,-150],"selection":["actor_update_car_body_color"],"nodes":{"perspectiveCamera1":{"pos":[0,-50]},"cameraControls1":{"pos":[0,150],"nodes":{"cameraOrbitControls1":{"pos":[0,0]}}},"setChildren1":{"pos":[0,1000]},"sphere1":{"pos":[650,-350]},"material1":{"pos":[450,-200]},"MAT":{"pos":[-400,300],"selection":["meshStandard_GREEN"],"nodes":{"meshStandard_RED":{"pos":[0,0]},"meshStandard_GREEN":{"pos":[0,200]},"meshStandard_BLUE":{"pos":[0,400]}}},"material2":{"pos":[650,-200]},"material3":{"pos":[850,-200]},"merge1":{"pos":[650,300]},"transform1":{"pos":[450,-100]},"transform2":{"pos":[650,-100]},"transform3":{"pos":[850,-100]},"hierarchy1":{"pos":[650,700]},"transform4":{"pos":[650,800]},"actor_hover_highlight":{"pos":[650,400],"selection":["getObjectAttribute1","constant1","vec3ToColor1"],"nodes":{"onObjectHover1":{"pos":[0,-50]},"getObjectAttribute1":{"pos":[-150,250]},"constant1":{"pos":[-400,250]},"multScalar1":{"pos":[150,150]},"twoWaySwitch1":{"pos":[350,150]},"setMaterialColor1":{"pos":[700,-50]},"setViewer1":{"pos":[900,0]},"vec3ToColor1":{"pos":[-50,250]}}},"attribCreate1":{"pos":[450,50]},"attribCreate2":{"pos":[650,50]},"attribCreate3":{"pos":[850,50]},"actor_update_car_body_color":{"pos":[650,550],"nodes":{"onObjectClick1":{"pos":[200,-100]},"getMaterial1":{"pos":[200,300]},"setMaterialColor1":{"pos":[650,150]},"getObjectAttribute1":{"pos":[150,550]},"constant2":{"pos":[-100,550]},"vec3ToColor1":{"pos":[250,550]}}}}}}},"shaders":{"/ground/MAT/meshStandardBuilder1":{"vertex":"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n\n\n\n// /ground/MAT/meshStandardBuilder1/globals1\nvarying vec3 v_POLY_globals1_position;\n\n\n\n\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\n\n\n\t// /ground/MAT/meshStandardBuilder1/globals1\n\tv_POLY_globals1_position = vec3(position);\n\t\n\t// /ground/MAT/meshStandardBuilder1/output1\n\tvec3 transformed = position;\n\tvec3 objectNormal = normal;\n\t#ifdef USE_TANGENT\n\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t#endif\n\n\n\n\t#include <morphcolor_vertex>\n\t#include <batching_vertex>\n// removed:\n//\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n// removed:\n//\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}","fragment":"#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef USE_SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULAR_COLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\tuniform vec2 anisotropyVector;\n\t#ifdef USE_ANISOTROPYMAP\n\t\tuniform sampler2D anisotropyMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include <common>\n\n\n\n// /ground/MAT/meshStandardBuilder1/checkers1\n// https://iquilezles.org/articles/checkerfiltering/\nfloat checkers(vec2 p) {\n\tvec2 s = sign(fract(p*.5)-.5);\n\treturn .5 - .5*s.x*s.y;\n}\nfloat checkersGrad( in vec2 p, in vec2 ddx, in vec2 ddy )\n{\n // filter kernel\n vec2 w = max(abs(ddx), abs(ddy)) + 0.01;\n // analytical integral (box filter)\n vec2 i = 2.0*(abs(fract((p-0.5*w)/2.0)-0.5)-abs(fract((p+0.5*w)/2.0)-0.5))/w;\n // xor pattern\n return 0.5 - 0.5*i.x*i.y;\n}\n\n\n\n\n\n\n\n\n// /ground/MAT/meshStandardBuilder1/globals1\nvarying vec3 v_POLY_globals1_position;\n\n\n\n\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <iridescence_fragment>\n#include <cube_uv_reflection_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_physical_pars_fragment>\n#include <fog_pars_fragment>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_physical_pars_fragment>\n#include <transmission_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <clearcoat_pars_fragment>\n#include <iridescence_pars_fragment>\n#include <roughnessmap_pars_fragment>\n#include <metalnessmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nstruct SSSModel {\n\tbool isActive;\n\tvec3 color;\n\tfloat thickness;\n\tfloat power;\n\tfloat scale;\n\tfloat distortion;\n\tfloat ambient;\n\tfloat attenuation;\n};\n\nvoid RE_Direct_Scattering(\n\tconst in IncidentLight directLight,\n\tconst in vec3 geometryNormal,\n\tconst in vec3 geometryViewDir,\n\tconst in SSSModel sssModel,\n\tinout ReflectedLight reflectedLight\n\t){\n\tvec3 scatteringHalf = normalize(directLight.direction + (geometryNormal * sssModel.distortion));\n\tfloat scatteringDot = pow(saturate(dot(geometryViewDir, -scatteringHalf)), sssModel.power) * sssModel.scale;\n\tvec3 scatteringIllu = (scatteringDot + sssModel.ambient) * (sssModel.color * (1.0-sssModel.thickness));\n\treflectedLight.directDiffuse += scatteringIllu * sssModel.attenuation * directLight.color;\n}\n\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\n\n\n\t// /ground/MAT/meshStandardBuilder1/constant1\n\tvec3 v_POLY_constant1_val = vec3(0.24313725490196078, 0.5098039215686274, 0.8549019607843137);\n\t\n\t// /ground/MAT/meshStandardBuilder1/constant2\n\tvec3 v_POLY_constant2_val = vec3(0.047058823529411764, 0.10196078431372549, 0.17647058823529413);\n\t\n\t// /ground/MAT/meshStandardBuilder1/vec3ToFloat1\n\tfloat v_POLY_vec3ToFloat1_x = v_POLY_globals1_position.x;\n\tfloat v_POLY_vec3ToFloat1_z = v_POLY_globals1_position.z;\n\t\n\t// /ground/MAT/meshStandardBuilder1/floatToVec2_1\n\tvec2 v_POLY_floatToVec2_1_vec2 = vec2(v_POLY_vec3ToFloat1_x, v_POLY_vec3ToFloat1_z);\n\t\n\t// /ground/MAT/meshStandardBuilder1/checkers1\n\tvec2 v_POLY_checkers1_coord = v_POLY_floatToVec2_1_vec2*vec2(1.0, 1.0)*1.0;\n\tfloat v_POLY_checkers1_checker = checkersGrad(v_POLY_checkers1_coord, dFdx(v_POLY_checkers1_coord), dFdy(v_POLY_checkers1_coord));\n\t\n\t// /ground/MAT/meshStandardBuilder1/mix1\n\tvec3 v_POLY_mix1_mix = mix(v_POLY_constant1_val, v_POLY_constant2_val, v_POLY_checkers1_checker);\n\t\n\t// /ground/MAT/meshStandardBuilder1/output1\n\tdiffuseColor.xyz = v_POLY_mix1_mix;\n\tfloat POLY_metalness = 1.0;\n\tfloat POLY_roughness = 1.0;\n\tvec3 POLY_emissive = vec3(1.0, 1.0, 1.0);\n\tSSSModel POLY_SSSModel = SSSModel(/*isActive*/false,/*color*/vec3(1.0, 1.0, 1.0), /*thickness*/0.1, /*power*/2.0, /*scale*/16.0, /*distortion*/0.1,/*ambient*/0.4,/*attenuation*/0.8 );\n\n\n\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive * POLY_emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\tfloat roughnessFactor = roughness * POLY_roughness;\n\n#ifdef USE_ROUGHNESSMAP\n\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\n\t// reads channel G, compatible with a combined OcclusionRoughnessMetallic (RGB) texture\n\troughnessFactor *= texelRoughness.g;\n\n#endif\n\n\tfloat metalnessFactor = metalness * POLY_metalness;\n\n#ifdef USE_METALNESSMAP\n\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\n\t// reads channel B, compatible with a combined OcclusionRoughnessMetallic (RGB) texture\n\tmetalnessFactor *= texelMetalness.b;\n\n#endif\n\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <clearcoat_normal_fragment_begin>\n\t#include <clearcoat_normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_physical_fragment>\n\t#include <lights_fragment_begin>\nif(POLY_SSSModel.isActive){\n\tRE_Direct_Scattering(directLight, geometryNormal, geometryViewDir, POLY_SSSModel, reflectedLight);\n}\n\n\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include <transmission_fragment>\n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\n\t#endif\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}","customDepthMaterial.vertex":"#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n\n\n\n// /ground/MAT/meshStandardBuilder1/globals1\nvarying vec3 v_POLY_globals1_position;\n\n\n\n\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <uv_vertex>\n\t#include <batching_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n// removed:\n//\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n// removed:\n//\t#include <begin_vertex>\n\n\n\n\t// /ground/MAT/meshStandardBuilder1/globals1\n\tv_POLY_globals1_position = vec3(position);\n\t\n\t// /ground/MAT/meshStandardBuilder1/output1\n\tvec3 transformed = position;\n\tvec3 objectNormal = normal;\n\t#ifdef USE_TANGENT\n\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t#endif\n\n\n\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvHighPrecisionZW = gl_Position.zw;\n}","customDepthMaterial.fragment":"\n// INSERT DEFINES\n\n\n#if DEPTH_PACKING == 3200\n\n\tuniform float opacity;\n\n#endif\n\n#include <common>\n\n\n\n// /ground/MAT/meshStandardBuilder1/checkers1\n// https://iquilezles.org/articles/checkerfiltering/\nfloat checkers(vec2 p) {\n\tvec2 s = sign(fract(p*.5)-.5);\n\treturn .5 - .5*s.x*s.y;\n}\nfloat checkersGrad( in vec2 p, in vec2 ddx, in vec2 ddy )\n{\n // filter kernel\n vec2 w = max(abs(ddx), abs(ddy)) + 0.01;\n // analytical integral (box filter)\n vec2 i = 2.0*(abs(fract((p-0.5*w)/2.0)-0.5)-abs(fract((p+0.5*w)/2.0)-0.5))/w;\n // xor pattern\n return 0.5 - 0.5*i.x*i.y;\n}\n\n\n\n\n\n\n\n\n// /ground/MAT/meshStandardBuilder1/globals1\nvarying vec3 v_POLY_globals1_position;\n\n\n\n\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\n\nvarying vec2 vHighPrecisionZW;\n\nstruct SSSModel {\n\tbool isActive;\n\tvec3 color;\n\tfloat thickness;\n\tfloat power;\n\tfloat scale;\n\tfloat distortion;\n\tfloat ambient;\n\tfloat attenuation;\n};\n\nvoid RE_Direct_Scattering(\n\tconst in IncidentLight directLight,\n\tconst in vec3 geometryNormal,\n\tconst in vec3 geometryViewDir,\n\tconst in SSSModel sssModel,\n\tinout ReflectedLight reflectedLight\n\t){\n\tvec3 scatteringHalf = normalize(directLight.direction + (geometryNormal * sssModel.distortion));\n\tfloat scatteringDot = pow(saturate(dot(geometryViewDir, -scatteringHalf)), sssModel.power) * sssModel.scale;\n\tvec3 scatteringIllu = (scatteringDot + sssModel.ambient) * (sssModel.color * (1.0-sssModel.thickness));\n\treflectedLight.directDiffuse += scatteringIllu * sssModel.attenuation * directLight.color;\n}\n\nvoid main() {\n\n\t#include <clipping_planes_fragment>\n\n\tvec4 diffuseColor = vec4( 1.0 );\n\n\t#if DEPTH_PACKING == 3200\n\n\t\tdiffuseColor.a = opacity;\n\n\t#endif\n\n\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\n\n\n\t// /ground/MAT/meshStandardBuilder1/constant1\n\tvec3 v_POLY_constant1_val = vec3(0.24313725490196078, 0.5098039215686274, 0.8549019607843137);\n\t\n\t// /ground/MAT/meshStandardBuilder1/constant2\n\tvec3 v_POLY_constant2_val = vec3(0.047058823529411764, 0.10196078431372549, 0.17647058823529413);\n\t\n\t// /ground/MAT/meshStandardBuilder1/vec3ToFloat1\n\tfloat v_POLY_vec3ToFloat1_x = v_POLY_globals1_position.x;\n\tfloat v_POLY_vec3ToFloat1_z = v_POLY_globals1_position.z;\n\t\n\t// /ground/MAT/meshStandardBuilder1/floatToVec2_1\n\tvec2 v_POLY_floatToVec2_1_vec2 = vec2(v_POLY_vec3ToFloat1_x, v_POLY_vec3ToFloat1_z);\n\t\n\t// /ground/MAT/meshStandardBuilder1/checkers1\n\tvec2 v_POLY_checkers1_coord = v_POLY_floatToVec2_1_vec2*vec2(1.0, 1.0)*1.0;\n\tfloat v_POLY_checkers1_checker = checkersGrad(v_POLY_checkers1_coord, dFdx(v_POLY_checkers1_coord), dFdy(v_POLY_checkers1_coord));\n\t\n\t// /ground/MAT/meshStandardBuilder1/mix1\n\tvec3 v_POLY_mix1_mix = mix(v_POLY_constant1_val, v_POLY_constant2_val, v_POLY_checkers1_checker);\n\t\n\t// /ground/MAT/meshStandardBuilder1/output1\n\tdiffuseColor.xyz = v_POLY_mix1_mix;\n\tfloat POLY_metalness = 1.0;\n\tfloat POLY_roughness = 1.0;\n\tvec3 POLY_emissive = vec3(1.0, 1.0, 1.0);\n\tSSSModel POLY_SSSModel = SSSModel(/*isActive*/false,/*color*/vec3(1.0, 1.0, 1.0), /*thickness*/0.1, /*power*/2.0, /*scale*/16.0, /*distortion*/0.1,/*ambient*/0.4,/*attenuation*/0.8 );\n\n\n\n\n\t// INSERT BODY\n\t// the new body lines should be added before the alphatest_fragment\n\t// so that alpha is set before (which is really how it would be set if the alphamap_fragment above was used by the material node parameters)\n\n\t#include <alphatest_fragment>\n\n\t#include <logdepthbuf_fragment>\n\n\n\t// Higher precision equivalent of gl_FragCoord.z. This assumes depthRange has been left to its default values.\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\n\t#if DEPTH_PACKING == 3200\n\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), diffuseColor.a );\n\n\t#elif DEPTH_PACKING == 3201\n\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\n\t#endif\n\n}\n","customDistanceMaterial.vertex":"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n\n\n\n// /ground/MAT/meshStandardBuilder1/globals1\nvarying vec3 v_POLY_globals1_position;\n\n\n\n\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <batching_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n// removed:\n//\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n// removed:\n//\t#include <begin_vertex>\n\n\n\n\t// /ground/MAT/meshStandardBuilder1/globals1\n\tv_POLY_globals1_position = vec3(position);\n\t\n\t// /ground/MAT/meshStandardBuilder1/output1\n\tvec3 transformed = position;\n\tvec3 objectNormal = normal;\n\t#ifdef USE_TANGENT\n\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t#endif\n\n\n\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\tvWorldPosition = worldPosition.xyz;\n}","customDistanceMaterial.fragment":"\n// INSERT DEFINES\n\n#define DISTANCE\n\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n\n#include <common>\n\n\n\n// /ground/MAT/meshStandardBuilder1/checkers1\n// https://iquilezles.org/articles/checkerfiltering/\nfloat checkers(vec2 p) {\n\tvec2 s = sign(fract(p*.5)-.5);\n\treturn .5 - .5*s.x*s.y;\n}\nfloat checkersGrad( in vec2 p, in vec2 ddx, in vec2 ddy )\n{\n // filter kernel\n vec2 w = max(abs(ddx), abs(ddy)) + 0.01;\n // analytical integral (box filter)\n vec2 i = 2.0*(abs(fract((p-0.5*w)/2.0)-0.5)-abs(fract((p+0.5*w)/2.0)-0.5))/w;\n // xor pattern\n return 0.5 - 0.5*i.x*i.y;\n}\n\n\n\n\n\n\n\n\n// /ground/MAT/meshStandardBuilder1/globals1\nvarying vec3 v_POLY_globals1_position;\n\n\n\n\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <clipping_planes_pars_fragment>\n\nstruct SSSModel {\n\tbool isActive;\n\tvec3 color;\n\tfloat thickness;\n\tfloat power;\n\tfloat scale;\n\tfloat distortion;\n\tfloat ambient;\n\tfloat attenuation;\n};\n\nvoid RE_Direct_Scattering(\n\tconst in IncidentLight directLight,\n\tconst in vec3 geometryNormal,\n\tconst in vec3 geometryViewDir,\n\tconst in SSSModel sssModel,\n\tinout ReflectedLight reflectedLight\n\t){\n\tvec3 scatteringHalf = normalize(directLight.direction + (geometryNormal * sssModel.distortion));\n\tfloat scatteringDot = pow(saturate(dot(geometryViewDir, -scatteringHalf)), sssModel.power) * sssModel.scale;\n\tvec3 scatteringIllu = (scatteringDot + sssModel.ambient) * (sssModel.color * (1.0-sssModel.thickness));\n\treflectedLight.directDiffuse += scatteringIllu * sssModel.attenuation * directLight.color;\n}\n\nvoid main() {\n\n\t#include <clipping_planes_fragment>\n\n\tvec4 diffuseColor = vec4( 1.0 );\n\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\n\n\n\t// /ground/MAT/meshStandardBuilder1/constant1\n\tvec3 v_POLY_constant1_val = vec3(0.24313725490196078, 0.5098039215686274, 0.8549019607843137);\n\t\n\t// /ground/MAT/meshStandardBuilder1/constant2\n\tvec3 v_POLY_constant2_val = vec3(0.047058823529411764, 0.10196078431372549, 0.17647058823529413);\n\t\n\t// /ground/MAT/meshStandardBuilder1/vec3ToFloat1\n\tfloat v_POLY_vec3ToFloat1_x = v_POLY_globals1_position.x;\n\tfloat v_POLY_vec3ToFloat1_z = v_POLY_globals1_position.z;\n\t\n\t// /ground/MAT/meshStandardBuilder1/floatToVec2_1\n\tvec2 v_POLY_floatToVec2_1_vec2 = vec2(v_POLY_vec3ToFloat1_x, v_POLY_vec3ToFloat1_z);\n\t\n\t// /ground/MAT/meshStandardBuilder1/checkers1\n\tvec2 v_POLY_checkers1_coord = v_POLY_floatToVec2_1_vec2*vec2(1.0, 1.0)*1.0;\n\tfloat v_POLY_checkers1_checker = checkersGrad(v_POLY_checkers1_coord, dFdx(v_POLY_checkers1_coord), dFdy(v_POLY_checkers1_coord));\n\t\n\t// /ground/MAT/meshStandardBuilder1/mix1\n\tvec3 v_POLY_mix1_mix = mix(v_POLY_constant1_val, v_POLY_constant2_val, v_POLY_checkers1_checker);\n\t\n\t// /ground/MAT/meshStandardBuilder1/output1\n\tdiffuseColor.xyz = v_POLY_mix1_mix;\n\tfloat POLY_metalness = 1.0;\n\tfloat POLY_roughness = 1.0;\n\tvec3 POLY_emissive = vec3(1.0, 1.0, 1.0);\n\tSSSModel POLY_SSSModel = SSSModel(/*isActive*/false,/*color*/vec3(1.0, 1.0, 1.0), /*thickness*/0.1, /*power*/2.0, /*scale*/16.0, /*distortion*/0.1,/*ambient*/0.4,/*attenuation*/0.8 );\n\n\n\n\n\t// INSERT BODY\n\n\t#include <alphatest_fragment>\n\n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist ); // clamp to [ 0, 1 ]\n\n\tgl_FragColor = packDepthToRGBA( dist );\n\n}\n","customDepthDOFMaterial.vertex":"#include <common>\n#include <batching_pars_vertex>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n\n\n\n// /ground/MAT/meshStandardBuilder1/globals1\nvarying vec3 v_POLY_globals1_position;\n\n\n\n\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <uv_vertex>\n\t#include <batching_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n// removed:\n//\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n// removed:\n//\t#include <begin_vertex>\n\n\n\n\t// /ground/MAT/meshStandardBuilder1/globals1\n\tv_POLY_globals1_position = vec3(position);\n\t\n\t// /ground/MAT/meshStandardBuilder1/output1\n\tvec3 transformed = position;\n\tvec3 objectNormal = normal;\n\t#ifdef USE_TANGENT\n\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t#endif\n\n\n\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvHighPrecisionZW = gl_Position.zw;\n}","customDepthDOFMaterial.fragment":"\n// INSERT DEFINES\n\n\n#if DEPTH_PACKING == 3200\n\n\tuniform float opacity;\n\n#endif\n\n#include <common>\n\n\n\n// /ground/MAT/meshStandardBuilder1/checkers1\n// https://iquilezles.org/articles/checkerfiltering/\nfloat checkers(vec2 p) {\n\tvec2 s = sign(fract(p*.5)-.5);\n\treturn .5 - .5*s.x*s.y;\n}\nfloat checkersGrad( in vec2 p, in vec2 ddx, in vec2 ddy )\n{\n // filter kernel\n vec2 w = max(abs(ddx), abs(ddy)) + 0.01;\n // analytical integral (box filter)\n vec2 i = 2.0*(abs(fract((p-0.5*w)/2.0)-0.5)-abs(fract((p+0.5*w)/2.0)-0.5))/w;\n // xor pattern\n return 0.5 - 0.5*i.x*i.y;\n}\n\n\n\n\n\n\n\n\n// /ground/MAT/meshStandardBuilder1/globals1\nvarying vec3 v_POLY_globals1_position;\n\n\n\n\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\n\nvarying vec2 vHighPrecisionZW;\n\nstruct SSSModel {\n\tbool isActive;\n\tvec3 color;\n\tfloat thickness;\n\tfloat power;\n\tfloat scale;\n\tfloat distortion;\n\tfloat ambient;\n\tfloat attenuation;\n};\n\nvoid RE_Direct_Scattering(\n\tconst in IncidentLight directLight,\n\tconst in vec3 geometryNormal,\n\tconst in vec3 geometryViewDir,\n\tconst in SSSModel sssModel,\n\tinout ReflectedLight reflectedLight\n\t){\n\tvec3 scatteringHalf = normalize(directLight.direction + (geometryNormal * sssModel.distortion));\n\tfloat scatteringDot = pow(saturate(dot(geometryViewDir, -scatteringHalf)), sssModel.power) * sssModel.scale;\n\tvec3 scatteringIllu = (scatteringDot + sssModel.ambient) * (sssModel.color * (1.0-sssModel.thickness));\n\treflectedLight.directDiffuse += scatteringIllu * sssModel.attenuation * directLight.color;\n}\n\nvoid main() {\n\n\t#include <clipping_planes_fragment>\n\n\tvec4 diffuseColor = vec4( 1.0 );\n\n\t#if DEPTH_PACKING == 3200\n\n\t\tdiffuseColor.a = opacity;\n\n\t#endif\n\n\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\n\n\n\t// /ground/MAT/meshStandardBuilder1/constant1\n\tvec3 v_POLY_constant1_val = vec3(0.24313725490196078, 0.5098039215686274, 0.8549019607843137);\n\t\n\t// /ground/MAT/meshStandardBuilder1/constant2\n\tvec3 v_POLY_constant2_val = vec3(0.047058823529411764, 0.10196078431372549, 0.17647058823529413);\n\t\n\t// /ground/MAT/meshStandardBuilder1/vec3ToFloat1\n\tfloat v_POLY_vec3ToFloat1_x = v_POLY_globals1_position.x;\n\tfloat v_POLY_vec3ToFloat1_z = v_POLY_globals1_position.z;\n\t\n\t// /ground/MAT/meshStandardBuilder1/floatToVec2_1\n\tvec2 v_POLY_floatToVec2_1_vec2 = vec2(v_POLY_vec3ToFloat1_x, v_POLY_vec3ToFloat1_z);\n\t\n\t// /ground/MAT/meshStandardBuilder1/checkers1\n\tvec2 v_POLY_checkers1_coord = v_POLY_floatToVec2_1_vec2*vec2(1.0, 1.0)*1.0;\n\tfloat v_POLY_checkers1_checker = checkersGrad(v_POLY_checkers1_coord, dFdx(v_POLY_checkers1_coord), dFdy(v_POLY_checkers1_coord));\n\t\n\t// /ground/MAT/meshStandardBuilder1/mix1\n\tvec3 v_POLY_mix1_mix = mix(v_POLY_constant1_val, v_POLY_constant2_val, v_POLY_checkers1_checker);\n\t\n\t// /ground/MAT/meshStandardBuilder1/output1\n\tdiffuseColor.xyz = v_POLY_mix1_mix;\n\tfloat POLY_metalness = 1.0;\n\tfloat POLY_roughness = 1.0;\n\tvec3 POLY_emissive = vec3(1.0, 1.0, 1.0);\n\tSSSModel POLY_SSSModel = SSSModel(/*isActive*/false,/*color*/vec3(1.0, 1.0, 1.0), /*thickness*/0.1, /*power*/2.0, /*scale*/16.0, /*distortion*/0.1,/*ambient*/0.4,/*attenuation*/0.8 );\n\n\n\n\n\t// INSERT BODY\n\t// the new body lines should be added before the alphatest_fragment\n\t// so that alpha is set before (which is really how it would be set if the alphamap_fragment above was used by the material node parameters)\n\n\t#include <alphatest_fragment>\n\n\t#include <logdepthbuf_fragment>\n\n\n\t// Higher precision equivalent of gl_FragCoord.z. This assumes depthRange has been left to its default values.\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\n\t#if DEPTH_PACKING == 3200\n\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), diffuseColor.a );\n\n\t#elif DEPTH_PACKING == 3201\n\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\n\t#endif\n\n}\n"}},"jsFunctionBodies":{"/cameras/actor_hover_highlight":"// insert defines\nclass CustomActorEvaluator extends ActorEvaluator {\n\t// insert members\n\n\t// /cameras/actor_hover_highlight/getObjectAttribute1\n\tv_POLY_getObjectAttribute1_val = computed(() =>\n\t\tgetObjectAttribute(\n\t\t\tthis.object3D,\n\t\t\tthis.v_POLY_constant1_val.value,\n\t\t\t\"Vector3\",\n\t\t\tVAR__getObjectAttribute1_defaultVector3.set(0, 0, 0)\n\t\t)\n\t);\n\n\t// /cameras/actor_hover_highlight/vec3ToColor1\n\tv_POLY_vec3ToColor1_Color = computed(() =>\n\t\tvec3ToColor(VAR__vec3ToColor1_vec3.copy(this.v_POLY_getObjectAttribute1_val.value), VAR__vec3ToColor1__1)\n\t);\n\n\t// /cameras/actor_hover_highlight/multScalar1\n\tv_POLY_multScalar1_val = computed(() =>\n\t\tmultScalarColor(VAR__multScalar1_value.copy(this.v_POLY_vec3ToColor1_Color.value), 2.0, VAR__multScalar1__1)\n\t);\n\n\t// /cameras/actor_hover_highlight/twoWaySwitch1\n\tv_POLY_twoWaySwitch1_val = computed(() =>\n\t\tthis.v_POLY_onObjectHover1_hovered.value\n\t\t\t? VAR__twoWaySwitch1_ifTrue.copy(this.v_POLY_multScalar1_val.value)\n\t\t\t: VAR__twoWaySwitch1_ifFalse.copy(this.v_POLY_vec3ToColor1_Color.value)\n\t);\n\n\t// /cameras/actor_hover_highlight/constant1\n\tv_POLY_constant1_val = { value: \"color\" };\n\n\t// /cameras/actor_hover_highlight/onObjectHover1\n\tv_POLY_onObjectHover1_hovered = ref(false);\n\tv_POLY_onObjectHover1_Intersection = ref(null);\n\n\tconstructor(node, object3D) {\n\t\tsuper(node, object3D);\n\t\t// insert after constructor\n\n\t\t// /cameras/actor_hover_highlight/onObjectHover1\n\t\taddObjectToObjectHoveredCheck(this.object3D, this, {\n\t\t\tpriority: { blockObjectsBehind: true, skipIfObjectsInFront: false },\n\t\t\tcpu: {\n\t\t\t\ttraverseChildren: true,\n\t\t\t\tpointsThreshold: 0.1,\n\t\t\t\tlineThreshold: 0.1,\n\t\t\t\tintersectionRef: this.v_POLY_onObjectHover1_Intersection,\n\t\t\t},\n\t\t\thover: {\n\t\t\t\thoveredStateRef: this.v_POLY_onObjectHover1_hovered,\n\t\t\t\tonHoveredStateChange: this.onObjectHover1.bind(this),\n\t\t\t},\n\t\t});\n\t}\n\t// insert body\n\n\tonObjectHover() {\n\t\tthis.onObjectHover1();\n\t}\n\t// /cameras/actor_hover_highlight/onObjectHover1\n\tonObjectHover1() {\n\t\tthis.setMaterialColor1(0);\n\t}\n\n\t// /cameras/actor_hover_highlight/setMaterialColor1\n\tsetMaterialColor1() {\n\t\tsetMaterialColor(\n\t\t\tthis.object3D.material,\n\t\t\tVAR__setMaterialColor1_color.copy(this.v_POLY_twoWaySwitch1_val.value),\n\t\t\t1.0\n\t\t);\n\t\tthis.setViewer1(0);\n\t}\n\n\t// /cameras/actor_hover_highlight/setViewer1\n\tsetViewer1() {\n\t\tsetViewer(\"active\", this.v_POLY_onObjectHover1_hovered.value);\n\t}\n}\nreturn CustomActorEvaluator;\n","/cameras/actor_update_car_body_color":"// insert defines\nclass CustomActorEvaluator extends ActorEvaluator {\n\t// insert members\n\n\t// /cameras/actor_update_car_body_color/getObjectAttribute1\n\tv_POLY_getObjectAttribute1_val = computed(() =>\n\t\tgetObjectAttribute(\n\t\t\tthis.object3D,\n\t\t\tthis.v_POLY_constant2_val.value,\n\t\t\t\"Vector3\",\n\t\t\tVAR__getObjectAttribute1_defaultVector3.set(0, 0, 0)\n\t\t)\n\t);\n\n\t// /cameras/actor_update_car_body_color/vec3ToColor1\n\tv_POLY_vec3ToColor1_Color = computed(() =>\n\t\tvec3ToColor(VAR__vec3ToColor1_vec3.copy(this.v_POLY_getObjectAttribute1_val.value), VAR__vec3ToColor1__1)\n\t);\n\n\t// /cameras/actor_update_car_body_color/getMaterial1\n\tv_POLY_getMaterial1_Material = computed(() => getMaterial(\"/geo1/decompose1/MAT/meshStandard__export_prep_mesh_0\"));\n\n\t// /cameras/actor_update_car_body_color/constant2\n\tv_POLY_constant2_val = { value: \"color\" };\n\n\t// /cameras/actor_update_car_body_color/onObjectClick1\n\tv_POLY_onObjectClick1_Intersection = ref(null);\n\n\tconstructor(node, object3D) {\n\t\tsuper(node, object3D);\n\t\t// insert after constructor\n\n\t\t// /cameras/actor_update_car_body_color/onObjectClick1\n\t\taddObjectToObjectClickCheck(this.object3D, this, {\n\t\t\tpriority: { blockObjectsBehind: true, skipIfObjectsInFront: false },\n\t\t\tcpu: {\n\t\t\t\ttraverseChildren: true,\n\t\t\t\tpointsThreshold: 0.1,\n\t\t\t\tlineThreshold: 0.1,\n\t\t\t\tintersectionRef: this.v_POLY_onObjectClick1_Intersection,\n\t\t\t},\n\t\t\tclick: { maxCursorMoveDistance: 0.05, maxDuration: 200.0, callback: this.onObjectClick1.bind(this) },\n\t\t\tconfig: { button: { left: true, middle: true, right: true }, modifier: { ctrl: 1.0, shift: 1.0, alt: 1.0 } },\n\t\t});\n\t}\n\t// insert body\n\n\tonObjectClick() {\n\t\tthis.onObjectClick1();\n\t}\n\t// /cameras/actor_update_car_body_color/onObjectClick1\n\tonObjectClick1() {\n\t\tthis.setMaterialColor1(0);\n\t}\n\n\t// /cameras/actor_update_car_body_color/setMaterialColor1\n\tsetMaterialColor1() {\n\t\tsetMaterialColor(\n\t\t\tthis.v_POLY_getMaterial1_Material.value,\n\t\t\tVAR__setMaterialColor1_color.copy(this.v_POLY_vec3ToColor1_Color.value),\n\t\t\t1.0\n\t\t);\n\t}\n}\nreturn CustomActorEvaluator;\n"}}
Code editor
{"multiple_panel":{"split_ratio":0.5,"split_panel0":{"split_ratio":0.6002317497103129,"split_panel0":{"panelTypes":["viewer"],"currentPanelIndex":0,"panel_data":{"camera":"/cameras/cameras:sopGroup/perspectiveCamera1","isViewerInitLayoutData":true,"linkIndex":1,"overlayedNetwork":{"allowed":false,"displayed":false}}},"split_panel1":{"panelTypes":["params"],"currentPanelIndex":0,"panel_data":{"active_folder":300,"linkIndex":1}},"split_mode":"vertical"},"split_panel1":{"panelTypes":["network","params","viewer"],"currentPanelIndex":0,"panel_data":{"camera":{"position":{"x":-307.4743744170268,"y":-261.8630608365323},"zoom":0.8632221069335931},"history":{"2":{"position":{"x":-27.454478224083466,"y":203.59310979070793},"zoom":1.0222221069335933},"36":{"position":{"x":-62.39132266270179,"y":-444.56524497394855},"zoom":1.0222221069335933},"294":{"position":{"x":-544.2940111976915,"y":-405.2671116671756},"zoom":0.4942221069335929},"379":{"position":{"x":-530.2312432447859,"y":171.46044629170825},"zoom":0.644222106933593},"394":{"position":{"x":0,"y":0},"zoom":0.644222106933593},"397":{"position":{"x":-424.7063520960182,"y":-63.45968275146147},"zoom":0.7112221069335931},"1508":{"position":{"x":-252.39133281311484,"y":-231.84785223530318},"zoom":1.0222221069335933},"2071":{"position":{"x":-307.4743744170268,"y":-261.8630608365323},"zoom":0.8632221069335931},"2327":{"position":{"x":-25.07810538816409,"y":-129.61077436554552},"zoom":0.7712221069335932}},"paramsDisplayed":false,"linkIndex":1}},"split_mode":"horizontal"},"currentNodes":["/cameras/actor_update_car_body_color","/","/","/","/","/","/","/"],"navigationHistory":{"nodePaths":{"1":["/geo1","/","/cameras","/cameras/actor_update_car_body_color","/cameras","/cameras/actor_update_car_body_color","/cameras","/cameras/actor_hover_highlight","/cameras","/cameras/actor_hover_highlight","/cameras","/cameras/actor_update_car_body_color","/cameras","/cameras/actor_hover_highlight","/cameras","/cameras/actor_update_car_body_color","/cameras","/cameras/actor_update_car_body_color","/cameras","/cameras/actor_update_car_body_color"],"2":["/"],"3":["/"],"4":["/"],"5":["/"],"6":["/"],"7":["/"],"8":["/"]},"index":{"1":19,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0}},"fullscreenPanelId":null,"saveOptions":{"checkRemoteAssetsUse":true,"minimizeFilesCount":false},"paramsModal":[]}
Used nodes
cop/envMap;cop/image;cop/imageEXR;event/cameraOrbitControls;mat/meshStandard;mat/meshStandardBuilder;obj/copNetwork;obj/geo;sop/actor;sop/attribCreate;sop/box;sop/cameraControls;sop/copNetwork;sop/decompose;sop/fileGLTF;sop/hemisphereLight;sop/hierarchy;sop/material;sop/materialsNetwork;sop/merge;sop/perspectiveCamera;sop/polarTransform;sop/setChildren;sop/sphere;sop/spotLight;sop/subnetInput;sop/subnetOutput;sop/transform
Used operations
Used modules
Used assemblers
GL_MESH_STANDARD;JS_ACTOR
Used integrations
[]
Used assets
Nodes map
{"/geo1":"obj/geo","/geo1/decompose1":"sop/decompose","/geo1/decompose1/COP":"sop/copNetwork","/geo1/decompose1/MAT":"sop/materialsNetwork","/geo1/decompose1/MAT/meshStandard__export_prep_mesh_0":"mat/meshStandard","/geo1/decompose1/MAT/meshStandard__export_prep_mesh_0_1":"mat/meshStandard","/geo1/decompose1/MAT/meshStandard__export_prep_mesh_0_2":"mat/meshStandard","/geo1/decompose1/MAT/meshStandard__export_prep_mesh_0_3":"mat/meshStandard","/geo1/decompose1/MAT/meshStandard__export_prep_mesh_0_4":"mat/meshStandard","/geo1/decompose1/material__export_prep_mesh_0":"sop/material","/geo1/decompose1/material__export_prep_mesh_0_1":"sop/material","/geo1/decompose1/material__export_prep_mesh_0_2":"sop/material","/geo1/decompose1/material__export_prep_mesh_0_3":"sop/material","/geo1/decompose1/material__export_prep_mesh_0_4":"sop/material","/geo1/decompose1/subnetInput1":"sop/subnetInput","/geo1/decompose1/subnetOutput1":"sop/subnetOutput","/geo1/fileGLTF1":"sop/fileGLTF","/ground":"obj/geo","/ground/material1":"sop/material","/ground/MAT":"sop/materialsNetwork","/ground/MAT/meshStandardBuilder1":"mat/meshStandardBuilder","/ground/box1":"sop/box","/COP":"obj/copNetwork","/COP/envMap":"cop/envMap","/COP/imageEnv":"cop/imageEXR","/COP/image1":"cop/image","/lights":"obj/geo","/lights/hemisphereLight1":"sop/hemisphereLight","/lights/spotLight1":"sop/spotLight","/lights/polarTransform1":"sop/polarTransform","/lights/merge1":"sop/merge","/cameras":"obj/geo","/cameras/perspectiveCamera1":"sop/perspectiveCamera","/cameras/cameraControls1":"sop/cameraControls","/cameras/cameraControls1/cameraOrbitControls1":"event/cameraOrbitControls","/cameras/setChildren1":"sop/setChildren","/cameras/sphere1":"sop/sphere","/cameras/material1":"sop/material","/cameras/MAT":"sop/materialsNetwork","/cameras/MAT/meshStandard_RED":"mat/meshStandard","/cameras/MAT/meshStandard_GREEN":"mat/meshStandard","/cameras/MAT/meshStandard_BLUE":"mat/meshStandard","/cameras/material2":"sop/material","/cameras/material3":"sop/material","/cameras/merge1":"sop/merge","/cameras/transform1":"sop/transform","/cameras/transform2":"sop/transform","/cameras/transform3":"sop/transform","/cameras/hierarchy1":"sop/hierarchy","/cameras/transform4":"sop/transform","/cameras/actor_hover_highlight":"sop/actor","/cameras/attribCreate1":"sop/attribCreate","/cameras/attribCreate2":"sop/attribCreate","/cameras/attribCreate3":"sop/attribCreate","/cameras/actor_update_car_body_color":"sop/actor"}
Js version
Editor version
Engine version
Logout
0%
There was a problem displaying your scene:
view scene source