Name
*
Code
{"properties":{"frame":0,"maxFrame":600,"maxFrameLocked":false,"realtimeState":true,"mainCameraNodePath":null,"versions":{"polygonjs":"1.1.251"}},"root":{"type":"root","nodes":{"geo1":{"type":"geo","nodes":{"line1":{"type":"line","params":{"length":1.1,"pointsCount":1000}},"code1":{"type":"code","params":{"codeTypescript":"\nconst otherPos = new Vector3();\nconst currentPos = new Vector3();\nconst tangent = new Vector3();\nconst tangentOffset = new Vector3();\nconst normalVector = new Vector3();\n\nexport class CodeSopProcessor extends BaseCodeSopProcessor {\n\toverride initializeProcessor() {}\n\toverride cook(inputCoreGroups: CoreGroup[]) {\n\t\tconst inputCoreGroup = inputCoreGroups[0];\n\t\tconst objects = inputCoreGroup.objectsWithGeo();\n\t\tfor (let object of objects) {\n\t\t\tthis._processObject(object);\n\t\t}\n\t\tthis.setCoreGroup(inputCoreGroup);\n\t}\n\tprivate _processObject(object: Object3DWithGeometry) {\n\t\tconst geometry = object.geometry;\n\t\tconst position = geometry.getAttribute('position');\n\t\tconst restP = geometry.getAttribute('restP');\n\t\tif (!position) {\n\t\t\treturn;\n\t\t}\n\t\tif (!restP) {\n\t\t\treturn console.warn('no restP');\n\t\t}\n\t\tconst {mult, twist} = this.pv;\n\t\tconst restPArray = restP.array;\n\t\tconst positionArray = position.array;\n\t\tconst stride = 3;\n\t\tconst pointsCount = position.count;\n\t\tfor (let i = 0; i < pointsCount; i++) {\n\t\t\tif (i < pointsCount - 1) {\n\t\t\t\tcurrentPos.fromArray(restPArray, i * stride);\n\t\t\t\totherPos.fromArray(restPArray, (i + 1) * stride);\n\t\t\t\ttangent.copy(currentPos).sub(otherPos);\n\t\t\t} else {\n\t\t\t\tcurrentPos.fromArray(restPArray, i * stride);\n\t\t\t\totherPos.fromArray(restPArray, (i - 1) * stride);\n\t\t\t\ttangent.copy(otherPos).sub(currentPos);\n\t\t\t}\n\t\t\ttangent.normalize();\n\t\t\ttangentOffset.copy(tangent);\n\t\t\ttangentOffset.x += 0.1;\n\t\t\ttangentOffset.normalize();\n\t\t\tnormalVector.crossVectors(tangentOffset, tangent);\n\t\t\tnormalVector.normalize();\n\t\t\tnormalVector.applyAxisAngle(tangent, i * twist);\n\n\t\t\tcurrentPos.add(normalVector.multiplyScalar(mult));\n\t\t\tcurrentPos.toArray(positionArray, i * stride);\n\t\t}\n\t}\n}\n","codeJavascript":"const otherPos = new Vector3();\r\nconst currentPos = new Vector3();\r\nconst tangent = new Vector3();\r\nconst tangentOffset = new Vector3();\r\nconst normalVector = new Vector3();\r\nexport class CodeSopProcessor extends BaseCodeSopProcessor {\r\n initializeProcessor() { }\r\n cook(inputCoreGroups) {\r\n const inputCoreGroup = inputCoreGroups[0];\r\n const objects = inputCoreGroup.objectsWithGeo();\r\n for (let object of objects) {\r\n this._processObject(object);\r\n }\r\n this.setCoreGroup(inputCoreGroup);\r\n }\r\n _processObject(object) {\r\n const geometry = object.geometry;\r\n const position = geometry.getAttribute('position');\r\n const restP = geometry.getAttribute('restP');\r\n if (!position) {\r\n return;\r\n }\r\n if (!restP) {\r\n return console.warn('no restP');\r\n }\r\n const { mult, twist } = this.pv;\r\n const restPArray = restP.array;\r\n const positionArray = position.array;\r\n const stride = 3;\r\n const pointsCount = position.count;\r\n for (let i = 0; i < pointsCount; i++) {\r\n if (i < pointsCount - 1) {\r\n currentPos.fromArray(restPArray, i * stride);\r\n otherPos.fromArray(restPArray, (i + 1) * stride);\r\n tangent.copy(currentPos).sub(otherPos);\r\n }\r\n else {\r\n currentPos.fromArray(restPArray, i * stride);\r\n otherPos.fromArray(restPArray, (i - 1) * stride);\r\n tangent.copy(otherPos).sub(currentPos);\r\n }\r\n tangent.normalize();\r\n tangentOffset.copy(tangent);\r\n tangentOffset.x += 0.1;\r\n tangentOffset.normalize();\r\n normalVector.crossVectors(tangentOffset, tangent);\r\n normalVector.normalize();\r\n normalVector.applyAxisAngle(tangent, i * twist);\r\n currentPos.add(normalVector.multiplyScalar(mult));\r\n currentPos.toArray(positionArray, i * stride);\r\n }\r\n }\r\n}\r\n","mult":{"type":"float","default_value":0,"options":{"spare":true},"raw_input":0.57},"twist":{"type":"float","default_value":0,"options":{"spare":true},"raw_input":0.04}},"inputs":["restAttributes1"]},"restAttributes1":{"type":"restAttributes","inputs":["line1"]},"code2":{"type":"code","params":{"codeTypescript":"\nconst otherPos = new Vector3();\nconst currentPos = new Vector3();\nconst tangent = new Vector3();\nconst tangentOffset = new Vector3();\nconst normalVector = new Vector3();\n\nexport class CodeSopProcessor extends BaseCodeSopProcessor {\n\toverride initializeProcessor() {}\n\toverride cook(inputCoreGroups: CoreGroup[]) {\n\t\tconst inputCoreGroup = inputCoreGroups[0];\n\t\tconst objects = inputCoreGroup.objectsWithGeo();\n\t\tfor (let object of objects) {\n\t\t\tthis._processObject(object);\n\t\t}\n\t\tthis.setCoreGroup(inputCoreGroup);\n\t}\n\tprivate _processObject(object: Object3DWithGeometry) {\n\t\tconst geometry = object.geometry;\n\t\tconst position = geometry.getAttribute('position');\n\t\tconst restP = geometry.getAttribute('restP');\n\t\tif (!position) {\n\t\t\treturn;\n\t\t}\n\t\tif (!restP) {\n\t\t\treturn console.warn('no restP');\n\t\t}\n\t\tconst {mult, twist} = this.pv;\n\t\tconst restPArray = restP.array;\n\t\tconst positionArray = position.array;\n\t\tconst stride = 3;\n\t\tconst pointsCount = position.count;\n\t\tfor (let i = 0; i < pointsCount; i++) {\n\t\t\tif (i < pointsCount - 1) {\n\t\t\t\tcurrentPos.fromArray(restPArray, i * stride);\n\t\t\t\totherPos.fromArray(restPArray, (i + 1) * stride);\n\t\t\t\ttangent.copy(currentPos).sub(otherPos);\n\t\t\t} else {\n\t\t\t\tcurrentPos.fromArray(restPArray, i * stride);\n\t\t\t\totherPos.fromArray(restPArray, (i - 1) * stride);\n\t\t\t\ttangent.copy(otherPos).sub(currentPos);\n\t\t\t}\n\t\t\ttangent.normalize();\n\t\t\ttangentOffset.copy(tangent);\n\t\t\ttangentOffset.x += 0.1;\n\t\t\ttangentOffset.normalize();\n\t\t\tnormalVector.crossVectors(tangentOffset, tangent);\n\t\t\tnormalVector.normalize();\n\t\t\tnormalVector.applyAxisAngle(tangent, i * twist);\n\n\t\t\tcurrentPos.add(normalVector.multiplyScalar(mult));\n\t\t\tcurrentPos.toArray(positionArray, i * stride);\n\t\t}\n\t}\n}\n","codeJavascript":"const otherPos = new Vector3();\nconst currentPos = new Vector3();\nconst tangent = new Vector3();\nconst tangentOffset = new Vector3();\nconst normalVector = new Vector3();\nexport class CodeSopProcessor extends BaseCodeSopProcessor {\n initializeProcessor() { }\n cook(inputCoreGroups) {\n const inputCoreGroup = inputCoreGroups[0];\n const objects = inputCoreGroup.objectsWithGeo();\n for (let object of objects) {\n this._processObject(object);\n }\n this.setCoreGroup(inputCoreGroup);\n }\n _processObject(object) {\n const geometry = object.geometry;\n const position = geometry.getAttribute('position');\n const restP = geometry.getAttribute('restP');\n if (!position) {\n return;\n }\n if (!restP) {\n return console.warn('no restP');\n }\n const { mult, twist } = this.pv;\n const restPArray = restP.array;\n const positionArray = position.array;\n const stride = 3;\n const pointsCount = position.count;\n for (let i = 0; i < pointsCount; i++) {\n if (i < pointsCount - 1) {\n currentPos.fromArray(restPArray, i * stride);\n otherPos.fromArray(restPArray, (i + 1) * stride);\n tangent.copy(currentPos).sub(otherPos);\n }\n else {\n currentPos.fromArray(restPArray, i * stride);\n otherPos.fromArray(restPArray, (i - 1) * stride);\n tangent.copy(otherPos).sub(currentPos);\n }\n tangent.normalize();\n tangentOffset.copy(tangent);\n tangentOffset.x += 0.1;\n tangentOffset.normalize();\n normalVector.crossVectors(tangentOffset, tangent);\n normalVector.normalize();\n normalVector.applyAxisAngle(tangent, i * twist);\n currentPos.add(normalVector.multiplyScalar(mult));\n currentPos.toArray(positionArray, i * stride);\n }\n }\n}\n","mult":{"type":"float","default_value":0,"options":{"spare":true},"raw_input":0.07},"twist":{"type":"float","default_value":0,"options":{"spare":true},"raw_input":0.59}},"inputs":["restAttributes2"],"flags":{"display":true}},"restAttributes2":{"type":"restAttributes","inputs":["code1"]}},"flags":{"display":true},"selection":["code1"]},"hemisphereLight1":{"type":"hemisphereLight","flags":{"display":true}},"perspectiveCamera1":{"type":"perspectiveCamera","nodes":{"events1":{"type":"eventsNetwork","nodes":{"cameraOrbitControls1":{"type":"cameraOrbitControls","params":{"target":[-0.1818305988849552,0.7048078887359653,0.1481718696430255]}}},"selection":["cameraOrbitControls1"]}},"params":{"t":[-2.3219138058680375,1.8001002156510322,0.570792567368039],"r":[-68.90079393353125,-61.251870687318004,-66.24583629761723],"controls":"./events1/cameraOrbitControls1"},"flags":{"display":true}},"COP":{"type":"copNetwork","nodes":{"imageEnv":{"type":"image","params":{"url":"https://raw.githubusercontent.com/polygonjs/polygonjs-assets/master/textures/piz_compressed.exr"}},"imageUv":{"type":"image","params":{"url":"https://raw.githubusercontent.com/polygonjs/polygonjs-assets/master/textures/uv.jpg","tflipY":true}},"envMap":{"type":"envMap","inputs":["imageEnv"]}}}}},"ui":{"nodes":{"geo1":{"pos":[-50,-150],"nodes":{"line1":{"pos":[-400,-150]},"code1":{"pos":[-400,50]},"restAttributes1":{"pos":[-400,-50]},"code2":{"pos":[-400,300]},"restAttributes2":{"pos":[-400,200]}}},"hemisphereLight1":{"pos":[150,100]},"perspectiveCamera1":{"pos":[-200,100],"nodes":{"events1":{"pos":[-200,50],"nodes":{"cameraOrbitControls1":{"pos":[150,50]}}}}},"COP":{"pos":[-200,200],"nodes":{"imageEnv":{"pos":[50,100]},"imageUv":{"pos":[-100,100]},"envMap":{"pos":[50,200]}}}}}}
Code editor
{"multiple_panel":{"split_ratio":0.49947916666666664,"split_panel0":{"split_ratio":0.5,"split_panel0":{"panelTypes":["viewer"],"currentPanelIndex":0,"panel_data":{"camera":"/perspectiveCamera1","linkIndex":1}},"split_panel1":{"panelTypes":["params"],"currentPanelIndex":0,"panel_data":{"active_folder":null,"linkIndex":1}},"split_mode":"vertical"},"split_panel1":{"panelTypes":["network","params","viewer"],"currentPanelIndex":0,"panel_data":{"camera":{"position":{"x":333.02883355176925,"y":-109.31061598951504},"zoom":1.0466392318244175},"history":{"2":{"position":{"x":-48,"y":-22},"zoom":0.5},"3":{"position":{"x":-48,"y":-22},"zoom":0.5},"6":{"position":{"x":11.339999999999996,"y":-96.49999999999999},"zoom":0.6172839506172841},"9":{"position":{"x":-32,"y":-88},"zoom":0.5},"32":{"position":{"x":333.02883355176925,"y":-109.31061598951504},"zoom":1.0466392318244175},"131":{"position":{"x":-59.04899999999998,"y":-65.1854},"zoom":0.8467543904215146}},"linkIndex":1}},"split_mode":"horizontal"},"currentNodes":["/geo1","/","/","/","/","/","/","/"],"navigationHistory":{"nodePaths":{"1":["/","/geo1"],"2":["/"],"3":["/"],"4":["/"],"5":["/"],"6":["/"],"7":["/"],"8":["/"]},"index":{"1":1,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0}},"fullscreenPanelId":null,"saveOptions":{"createExport":true,"compressJs":true,"publishToIntegrations":false},"paramsModal":[]}
Used nodes
cop/envMap;cop/image;event/cameraOrbitControls;obj/copNetwork;obj/geo;obj/hemisphereLight;obj/perspectiveCamera;sop/code;sop/eventsNetwork;sop/line;sop/restAttributes
Used operations
Used modules
EXRLoader
Used assemblers
Used integrations
[]
Used assets
Nodes map
{"/geo1":"obj/geo","/geo1/line1":"sop/line","/geo1/code1":"sop/code","/geo1/restAttributes1":"sop/restAttributes","/geo1/code2":"sop/code","/geo1/restAttributes2":"sop/restAttributes","/hemisphereLight1":"obj/hemisphereLight","/perspectiveCamera1":"obj/perspectiveCamera","/perspectiveCamera1/events1":"sop/eventsNetwork","/perspectiveCamera1/events1/cameraOrbitControls1":"event/cameraOrbitControls","/COP":"obj/copNetwork","/COP/imageEnv":"cop/image","/COP/imageUv":"cop/image","/COP/envMap":"cop/envMap"}
Js version
Editor version
Engine version
Name
*
Code
{"properties":{"frame":0,"maxFrame":600,"maxFrameLocked":false,"realtimeState":true,"mainCameraNodePath":null,"versions":{"polygonjs":"1.1.251"}},"root":{"type":"root","nodes":{"geo1":{"type":"geo","nodes":{"line1":{"type":"line","params":{"length":1.1,"pointsCount":1000}},"code1":{"type":"code","params":{"codeTypescript":"\nconst otherPos = new Vector3();\nconst currentPos = new Vector3();\nconst tangent = new Vector3();\nconst tangentOffset = new Vector3();\nconst normalVector = new Vector3();\n\nexport class CodeSopProcessor extends BaseCodeSopProcessor {\n\toverride initializeProcessor() {}\n\toverride cook(inputCoreGroups: CoreGroup[]) {\n\t\tconst inputCoreGroup = inputCoreGroups[0];\n\t\tconst objects = inputCoreGroup.objectsWithGeo();\n\t\tfor (let object of objects) {\n\t\t\tthis._processObject(object);\n\t\t}\n\t\tthis.setCoreGroup(inputCoreGroup);\n\t}\n\tprivate _processObject(object: Object3DWithGeometry) {\n\t\tconst geometry = object.geometry;\n\t\tconst position = geometry.getAttribute('position');\n\t\tconst restP = geometry.getAttribute('restP');\n\t\tif (!position) {\n\t\t\treturn;\n\t\t}\n\t\tif (!restP) {\n\t\t\treturn console.warn('no restP');\n\t\t}\n\t\tconst {mult, twist} = this.pv;\n\t\tconst restPArray = restP.array;\n\t\tconst positionArray = position.array;\n\t\tconst stride = 3;\n\t\tconst pointsCount = position.count;\n\t\tfor (let i = 0; i < pointsCount; i++) {\n\t\t\tif (i < pointsCount - 1) {\n\t\t\t\tcurrentPos.fromArray(restPArray, i * stride);\n\t\t\t\totherPos.fromArray(restPArray, (i + 1) * stride);\n\t\t\t\ttangent.copy(currentPos).sub(otherPos);\n\t\t\t} else {\n\t\t\t\tcurrentPos.fromArray(restPArray, i * stride);\n\t\t\t\totherPos.fromArray(restPArray, (i - 1) * stride);\n\t\t\t\ttangent.copy(otherPos).sub(currentPos);\n\t\t\t}\n\t\t\ttangent.normalize();\n\t\t\ttangentOffset.copy(tangent);\n\t\t\ttangentOffset.x += 0.1;\n\t\t\ttangentOffset.normalize();\n\t\t\tnormalVector.crossVectors(tangentOffset, tangent);\n\t\t\tnormalVector.normalize();\n\t\t\tnormalVector.applyAxisAngle(tangent, i * twist);\n\n\t\t\tcurrentPos.add(normalVector.multiplyScalar(mult));\n\t\t\tcurrentPos.toArray(positionArray, i * stride);\n\t\t}\n\t}\n}\n","codeJavascript":"const otherPos = new Vector3();\r\nconst currentPos = new Vector3();\r\nconst tangent = new Vector3();\r\nconst tangentOffset = new Vector3();\r\nconst normalVector = new Vector3();\r\nexport class CodeSopProcessor extends BaseCodeSopProcessor {\r\n initializeProcessor() { }\r\n cook(inputCoreGroups) {\r\n const inputCoreGroup = inputCoreGroups[0];\r\n const objects = inputCoreGroup.objectsWithGeo();\r\n for (let object of objects) {\r\n this._processObject(object);\r\n }\r\n this.setCoreGroup(inputCoreGroup);\r\n }\r\n _processObject(object) {\r\n const geometry = object.geometry;\r\n const position = geometry.getAttribute('position');\r\n const restP = geometry.getAttribute('restP');\r\n if (!position) {\r\n return;\r\n }\r\n if (!restP) {\r\n return console.warn('no restP');\r\n }\r\n const { mult, twist } = this.pv;\r\n const restPArray = restP.array;\r\n const positionArray = position.array;\r\n const stride = 3;\r\n const pointsCount = position.count;\r\n for (let i = 0; i < pointsCount; i++) {\r\n if (i < pointsCount - 1) {\r\n currentPos.fromArray(restPArray, i * stride);\r\n otherPos.fromArray(restPArray, (i + 1) * stride);\r\n tangent.copy(currentPos).sub(otherPos);\r\n }\r\n else {\r\n currentPos.fromArray(restPArray, i * stride);\r\n otherPos.fromArray(restPArray, (i - 1) * stride);\r\n tangent.copy(otherPos).sub(currentPos);\r\n }\r\n tangent.normalize();\r\n tangentOffset.copy(tangent);\r\n tangentOffset.x += 0.1;\r\n tangentOffset.normalize();\r\n normalVector.crossVectors(tangentOffset, tangent);\r\n normalVector.normalize();\r\n normalVector.applyAxisAngle(tangent, i * twist);\r\n currentPos.add(normalVector.multiplyScalar(mult));\r\n currentPos.toArray(positionArray, i * stride);\r\n }\r\n }\r\n}\r\n","mult":{"type":"float","default_value":0,"options":{"spare":true},"raw_input":0.57},"twist":{"type":"float","default_value":0,"options":{"spare":true},"raw_input":0.04}},"inputs":["restAttributes1"]},"restAttributes1":{"type":"restAttributes","inputs":["line1"]},"code2":{"type":"code","params":{"codeTypescript":"\nconst otherPos = new Vector3();\nconst currentPos = new Vector3();\nconst tangent = new Vector3();\nconst tangentOffset = new Vector3();\nconst normalVector = new Vector3();\n\nexport class CodeSopProcessor extends BaseCodeSopProcessor {\n\toverride initializeProcessor() {}\n\toverride cook(inputCoreGroups: CoreGroup[]) {\n\t\tconst inputCoreGroup = inputCoreGroups[0];\n\t\tconst objects = inputCoreGroup.objectsWithGeo();\n\t\tfor (let object of objects) {\n\t\t\tthis._processObject(object);\n\t\t}\n\t\tthis.setCoreGroup(inputCoreGroup);\n\t}\n\tprivate _processObject(object: Object3DWithGeometry) {\n\t\tconst geometry = object.geometry;\n\t\tconst position = geometry.getAttribute('position');\n\t\tconst restP = geometry.getAttribute('restP');\n\t\tif (!position) {\n\t\t\treturn;\n\t\t}\n\t\tif (!restP) {\n\t\t\treturn console.warn('no restP');\n\t\t}\n\t\tconst {mult, twist} = this.pv;\n\t\tconst restPArray = restP.array;\n\t\tconst positionArray = position.array;\n\t\tconst stride = 3;\n\t\tconst pointsCount = position.count;\n\t\tfor (let i = 0; i < pointsCount; i++) {\n\t\t\tif (i < pointsCount - 1) {\n\t\t\t\tcurrentPos.fromArray(restPArray, i * stride);\n\t\t\t\totherPos.fromArray(restPArray, (i + 1) * stride);\n\t\t\t\ttangent.copy(currentPos).sub(otherPos);\n\t\t\t} else {\n\t\t\t\tcurrentPos.fromArray(restPArray, i * stride);\n\t\t\t\totherPos.fromArray(restPArray, (i - 1) * stride);\n\t\t\t\ttangent.copy(otherPos).sub(currentPos);\n\t\t\t}\n\t\t\ttangent.normalize();\n\t\t\ttangentOffset.copy(tangent);\n\t\t\ttangentOffset.x += 0.1;\n\t\t\ttangentOffset.normalize();\n\t\t\tnormalVector.crossVectors(tangentOffset, tangent);\n\t\t\tnormalVector.normalize();\n\t\t\tnormalVector.applyAxisAngle(tangent, i * twist);\n\n\t\t\tcurrentPos.add(normalVector.multiplyScalar(mult));\n\t\t\tcurrentPos.toArray(positionArray, i * stride);\n\t\t}\n\t}\n}\n","codeJavascript":"const otherPos = new Vector3();\nconst currentPos = new Vector3();\nconst tangent = new Vector3();\nconst tangentOffset = new Vector3();\nconst normalVector = new Vector3();\nexport class CodeSopProcessor extends BaseCodeSopProcessor {\n initializeProcessor() { }\n cook(inputCoreGroups) {\n const inputCoreGroup = inputCoreGroups[0];\n const objects = inputCoreGroup.objectsWithGeo();\n for (let object of objects) {\n this._processObject(object);\n }\n this.setCoreGroup(inputCoreGroup);\n }\n _processObject(object) {\n const geometry = object.geometry;\n const position = geometry.getAttribute('position');\n const restP = geometry.getAttribute('restP');\n if (!position) {\n return;\n }\n if (!restP) {\n return console.warn('no restP');\n }\n const { mult, twist } = this.pv;\n const restPArray = restP.array;\n const positionArray = position.array;\n const stride = 3;\n const pointsCount = position.count;\n for (let i = 0; i < pointsCount; i++) {\n if (i < pointsCount - 1) {\n currentPos.fromArray(restPArray, i * stride);\n otherPos.fromArray(restPArray, (i + 1) * stride);\n tangent.copy(currentPos).sub(otherPos);\n }\n else {\n currentPos.fromArray(restPArray, i * stride);\n otherPos.fromArray(restPArray, (i - 1) * stride);\n tangent.copy(otherPos).sub(currentPos);\n }\n tangent.normalize();\n tangentOffset.copy(tangent);\n tangentOffset.x += 0.1;\n tangentOffset.normalize();\n normalVector.crossVectors(tangentOffset, tangent);\n normalVector.normalize();\n normalVector.applyAxisAngle(tangent, i * twist);\n currentPos.add(normalVector.multiplyScalar(mult));\n currentPos.toArray(positionArray, i * stride);\n }\n }\n}\n","mult":{"type":"float","default_value":0,"options":{"spare":true},"raw_input":0.07},"twist":{"type":"float","default_value":0,"options":{"spare":true},"raw_input":0.59}},"inputs":["restAttributes2"],"flags":{"display":true}},"restAttributes2":{"type":"restAttributes","inputs":["code1"]}},"flags":{"display":true},"selection":["code1"]},"hemisphereLight1":{"type":"hemisphereLight","flags":{"display":true}},"perspectiveCamera1":{"type":"perspectiveCamera","nodes":{"events1":{"type":"eventsNetwork","nodes":{"cameraOrbitControls1":{"type":"cameraOrbitControls","params":{"target":[-0.1818305988849552,0.7048078887359653,0.1481718696430255]}}},"selection":["cameraOrbitControls1"]}},"params":{"t":[-2.3219138058680375,1.8001002156510322,0.570792567368039],"r":[-68.90079393353125,-61.251870687318004,-66.24583629761723],"controls":"./events1/cameraOrbitControls1"},"flags":{"display":true}},"COP":{"type":"copNetwork","nodes":{"imageEnv":{"type":"image","params":{"url":"https://raw.githubusercontent.com/polygonjs/polygonjs-assets/master/textures/piz_compressed.exr"}},"imageUv":{"type":"image","params":{"url":"https://raw.githubusercontent.com/polygonjs/polygonjs-assets/master/textures/uv.jpg","tflipY":true}},"envMap":{"type":"envMap","inputs":["imageEnv"]}}}}},"ui":{"nodes":{"geo1":{"pos":[-50,-150],"nodes":{"line1":{"pos":[-400,-150]},"code1":{"pos":[-400,50]},"restAttributes1":{"pos":[-400,-50]},"code2":{"pos":[-400,300]},"restAttributes2":{"pos":[-400,200]}}},"hemisphereLight1":{"pos":[150,100]},"perspectiveCamera1":{"pos":[-200,100],"nodes":{"events1":{"pos":[-200,50],"nodes":{"cameraOrbitControls1":{"pos":[150,50]}}}}},"COP":{"pos":[-200,200],"nodes":{"imageEnv":{"pos":[50,100]},"imageUv":{"pos":[-100,100]},"envMap":{"pos":[50,200]}}}}}}
Code editor
{"multiple_panel":{"split_ratio":0.49947916666666664,"split_panel0":{"split_ratio":0.5,"split_panel0":{"panelTypes":["viewer"],"currentPanelIndex":0,"panel_data":{"camera":"/perspectiveCamera1","linkIndex":1}},"split_panel1":{"panelTypes":["params"],"currentPanelIndex":0,"panel_data":{"active_folder":null,"linkIndex":1}},"split_mode":"vertical"},"split_panel1":{"panelTypes":["network","params","viewer"],"currentPanelIndex":0,"panel_data":{"camera":{"position":{"x":333.02883355176925,"y":-109.31061598951504},"zoom":1.0466392318244175},"history":{"2":{"position":{"x":-48,"y":-22},"zoom":0.5},"3":{"position":{"x":-48,"y":-22},"zoom":0.5},"6":{"position":{"x":11.339999999999996,"y":-96.49999999999999},"zoom":0.6172839506172841},"9":{"position":{"x":-32,"y":-88},"zoom":0.5},"32":{"position":{"x":333.02883355176925,"y":-109.31061598951504},"zoom":1.0466392318244175},"131":{"position":{"x":-59.04899999999998,"y":-65.1854},"zoom":0.8467543904215146}},"linkIndex":1}},"split_mode":"horizontal"},"currentNodes":["/geo1","/","/","/","/","/","/","/"],"navigationHistory":{"nodePaths":{"1":["/","/geo1"],"2":["/"],"3":["/"],"4":["/"],"5":["/"],"6":["/"],"7":["/"],"8":["/"]},"index":{"1":1,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0}},"fullscreenPanelId":null,"saveOptions":{"createExport":true,"compressJs":true,"publishToIntegrations":false},"paramsModal":[]}
Used nodes
cop/envMap;cop/image;event/cameraOrbitControls;obj/copNetwork;obj/geo;obj/hemisphereLight;obj/perspectiveCamera;sop/code;sop/eventsNetwork;sop/line;sop/restAttributes
Used operations
Used modules
EXRLoader
Used assemblers
Used integrations
[]
Used assets
Nodes map
{"/geo1":"obj/geo","/geo1/line1":"sop/line","/geo1/code1":"sop/code","/geo1/restAttributes1":"sop/restAttributes","/geo1/code2":"sop/code","/geo1/restAttributes2":"sop/restAttributes","/hemisphereLight1":"obj/hemisphereLight","/perspectiveCamera1":"obj/perspectiveCamera","/perspectiveCamera1/events1":"sop/eventsNetwork","/perspectiveCamera1/events1/cameraOrbitControls1":"event/cameraOrbitControls","/COP":"obj/copNetwork","/COP/imageEnv":"cop/image","/COP/imageUv":"cop/image","/COP/envMap":"cop/envMap"}
Js version
Editor version
Engine version
Logout
0%
There was a problem displaying your scene:
view scene source