1!function(){try{var t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new t.Error).stack;n&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[n]="d8fd3a87-abb3-445c-a169-bfa5e65137bd",t._sentryDebugIdIdentifier="sentry-dbid-d8fd3a87-abb3-445c-a169-bfa5e65137bd")}catch(t){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5053],{85053:(t,n,e)=>{e.r(n),e.d(n,{USDZExporter:()=>c});var a=e(7978),o=e(40116);class c{setTextureUtils(t){this.textureUtils=t}parse(t,n,e,a){this.parseAsync(t,a).then(n).catch(e)}async parseAsync(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};n=Object.assign({ar:{anchoring:{type:"plane"},planeAnchoring:{alignment:"horizontal"}},includeAnchoringProperties:!0,quickLookCompatible:!1,maxTextureSize:1024},n);let e={},c="model.usda";e[c]=null;let s=r();s+=function(t){let n=!0===t.includeAnchoringProperties?'\n token preliminary:anchoring:type = "'.concat(t.ar.anchoring.type,'"\n token preliminary:planeAnchoring:alignment = "').concat(t.ar.planeAnchoring.alignment,'"\n '):"";return'def Xform "Root"\n{\n def Scope "Scenes" (\n kind = "sceneLibrary"\n )\n {\n def Xform "Scene" (\n customData = {\n bool preliminary_collidesWithEnvironment = 0\n string sceneName = "Scene"\n }\n sceneName = "Scene"\n )\n {'.concat(n,"\n")}(n);let f={},d={};for(let m in t.traverseVisible(t=>{if(t.isMesh){let a=t.geometry,c=t.material;if(c.isMeshStandardMaterial){let u="geometries/Geometry_"+a.id+".usda";if(!(u in e)){var n;let t;let c=function(t){let n=function(t){var n;let e=t.attributes,a=e.position.count;return'\n def Mesh "'.concat("Geometry",'"\n {\n int[] faceVertexCounts = [').concat(Array((null!==(n=t).index?n.index.count:n.attributes.position.count)/3).fill(3).join(", "),"]\n int[] faceVertexIndices = [").concat(function(t){let n=t.index,e=[];if(null!==n)for(let t=0;t<n.count;t++)e.push(n.getX(t));else{let n=t.attributes.position.count;for(let t=0;t<n;t++)e.push(t)}return e.join(", ")}(t),"]\n normal3f[] normals = [").concat(l(e.normal,a),'] (\n interpolation = "vertex"\n )\n point3f[] points = [').concat(l(e.position,a),"]\n").concat(function(t){let n="";for(let e=0;e<4;e++){let a=e>0?e:"",o=t["uv"+a];void 0!==o&&(n+="\n texCoord2f[] primvars:st".concat(a," = [").concat(function(t){let n=[];for(let e=0;e<t.count;e++){let a=t.getX(e),o=t.getY(e);n.push("(".concat(a.toPrecision(7),", ").concat(1-o.toPrecision(7),")"))}return n.join(", ")}(o),'] (\n interpolation = "vertex"\n )'))}let e=t.color;if(void 0!==e){let t=e.count;n+="\n color3f[] primvars:displayColor = [".concat(l(e,t),'] (\n interpolation = "vertex"\n )')}return n}(e),'\n uniform token subdivisionScheme = "none"\n }\n')}(t);return'\ndef "Geometry"\n{\n'.concat(n,"\n}\n")}(a);e[u]=(n=c,t=r()+n,(0,o._u)(t))}c.uuid in f||(f[c.uuid]=c),s+=function(t,n,e){let a="Object_"+t.id,o=i(t.matrixWorld);return t.matrixWorld.determinant(),' def Xform "'.concat(a,'" (\n prepend references = @./geometries/Geometry_').concat(n.id,'.usda@</Geometry>\n prepend apiSchemas = ["MaterialBindingAPI"]\n )\n {\n matrix4d xformOp:transform = ').concat(o,'\n uniform token[] xformOpOrder = ["xformOp:transform"]\n\n rel material:binding = </Materials/Material_').concat(e.id,">\n }\n\n")}(t,a,f[c.uuid])}}else t.isCamera&&(s+=function(t){let n=t.name?t.name:"Camera_"+t.id,e=i(t.matrixWorld);return(t.matrixWorld.determinant(),t.isOrthographicCamera)?'def Camera "'.concat(n,'"\n {\n matrix4d xformOp:transform = ').concat(e,'\n uniform token[] xformOpOrder = ["xformOp:transform"]\n\n float2 clippingRange = (').concat(t.near.toPrecision(7),", ").concat(t.far.toPrecision(7),")\n float horizontalAperture = ").concat(((Math.abs(t.left)+Math.abs(t.right))*10).toPrecision(7),"\n float verticalAperture = ").concat(((Math.abs(t.top)+Math.abs(t.bottom))*10).toPrecision(7),'\n token projection = "orthographic"\n }\n\n '):'def Camera "'.concat(n,'"\n {\n matrix4d xformOp:transform = ').concat(e,'\n uniform token[] xformOpOrder = ["xformOp:transform"]\n\n float2 clippingRange = (').concat(t.near.toPrecision(7),", ").concat(t.far.toPrecision(7),")\n float focalLength = ").concat(t.getFocalLength().toPrecision(7),"\n float focusDistance = ").concat(t.focus.toPrecision(7),"\n float horizontalAperture = ").concat(t.getFilmWidth().toPrecision(7),'\n token projection = "perspective"\n float verticalAperture = ').concat(t.getFilmHeight().toPrecision(7),"\n }\n\n ")}(t))}),s+="\n }\n }\n}\n\n",s+=function(t,n){let e=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=[];for(let c in t){let r=t[c];o.push(function(t,n){let e=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=[],c=[];function r(o,c,r){var i;let s=o.source.id+"_"+o.flipY;n[s]=o;let l=o.channel>0?"st"+o.channel:"st",u={1e3:"repeat",1001:"clamp",1002:"mirror"},f=o.repeat.clone(),d=o.offset.clone(),m=o.rotation,h=Math.sin(m),g=Math.cos(m);return d.y=1-d.y-f.y,e?(d.x=d.x/f.x,d.y=d.y/f.y,d.x+=h/f.x,d.y+=g-1):(d.x+=h*f.x,d.y+=(1-g)*f.y),'\n def Shader "PrimvarReader_'.concat(c,'"\n {\n uniform token info:id = "UsdPrimvarReader_float2"\n float2 inputs:fallback = (0.0, 0.0)\n token input
1s:varname = "').concat(l,'"\n float2 outputs:result\n }\n\n def Shader "Transform2d_').concat(c,'"\n {\n uniform token info:id = "UsdTransform2d"\n token inputs:in.connect = </Materials/Material_').concat(t.id,"/PrimvarReader_").concat(c,".outputs:result>\n float inputs:rotation = ").concat((180/Math.PI*m).toFixed(7),"\n float2 inputs:scale = ").concat(p(f),"\n float2 inputs:translation = ").concat(p(d),'\n float2 outputs:result\n }\n\n def Shader "Texture_').concat(o.id,"_").concat(c,'"\n {\n uniform token info:id = "UsdUVTexture"\n asset inputs:file = @textures/Texture_').concat(s,".png@\n float2 inputs:st.connect = </Materials/Material_").concat(t.id,"/Transform2d_").concat(c,".outputs:result>\n ").concat(void 0!==r?"float4 inputs:scale = "+(i=r,"(".concat(i.r,", ").concat(i.g,", ").concat(i.b,", 1.0)")):"",'\n token inputs:sourceColorSpace = "').concat(o.colorSpace===a.jf0?"raw":"sRGB",'"\n token inputs:wrapS = "').concat(u[o.wrapS],'"\n token inputs:wrapT = "').concat(u[o.wrapT],'"\n float outputs:r\n float outputs:g\n float outputs:b\n float3 outputs:rgb\n ').concat(t.transparent||t.alphaTest>0?"float outputs:a":"","\n }")}return t.side,a.$EB,null!==t.map?(o.push("".concat(" ","color3f inputs:diffuseColor.connect = </Materials/Material_").concat(t.id,"/Texture_").concat(t.map.id,"_diffuse.outputs:rgb>")),t.transparent?o.push("".concat(" ","float inputs:opacity.connect = </Materials/Material_").concat(t.id,"/Texture_").concat(t.map.id,"_diffuse.outputs:a>")):t.alphaTest>0&&(o.push("".concat(" ","float inputs:opacity.connect = </Materials/Material_").concat(t.id,"/Texture_").concat(t.map.id,"_diffuse.outputs:a>")),o.push("".concat(" ","float inputs:opacityThreshold = ").concat(t.alphaTest))),c.push(r(t.map,"diffuse",t.color))):o.push("".concat(" ","color3f inputs:diffuseColor = ").concat(u(t.color))),null!==t.emissiveMap?(o.push("".concat(" ","color3f inputs:emissiveColor.connect = </Materials/Material_").concat(t.id,"/Texture_").concat(t.emissiveMap.id,"_emissive.outputs:rgb>")),c.push(r(t.emissiveMap,"emissive",new a.Q1f(t.emissive.r*t.emissiveIntensity,t.emissive.g*t.emissiveIntensity,t.emissive.b*t.emissiveIntensity)))):t.emissive.getHex()>0&&o.push("".concat(" ","color3f inputs:emissiveColor = ").concat(u(t.emissive))),null!==t.normalMap&&(o.push("".concat(" ","normal3f inputs:normal.connect = </Materials/Material_").concat(t.id,"/Texture_").concat(t.normalMap.id,"_normal.outputs:rgb>")),c.push(r(t.normalMap,"normal"))),null!==t.aoMap&&(o.push("".concat(" ","float inputs:occlusion.connect = </Materials/Material_").concat(t.id,"/Texture_").concat(t.aoMap.id,"_occlusion.outputs:r>")),c.push(r(t.aoMap,"occlusion",new a.Q1f(t.aoMapIntensity,t.aoMapIntensity,t.aoMapIntensity)))),null!==t.roughnessMap?(o.push("".concat(" ","float inputs:roughness.connect = </Materials/Material_").concat(t.id,"/Texture_").concat(t.roughnessMap.id,"_roughness.outputs:g>")),c.push(r(t.roughnessMap,"roughness",new a.Q1f(t.roughness,t.roughness,t.roughness)))):o.push("".concat(" ","float inputs:roughness = ").concat(t.roughness)),null!==t.metalnessMap?(o.push("".concat(" ","float inputs:metallic.connect = </Materials/Material_").concat(t.id,"/Texture_").concat(t.metalnessMap.id,"_metallic.outputs:b>")),c.push(r(t.metalnessMap,"metallic",new a.Q1f(t.metalness,t.metalness,t.metalness)))):o.push("".concat(" ","float inputs:metallic = ").concat(t.metalness)),null!==t.alphaMap?(o.push("".concat(" ","float inputs:opacity.connect = </Materials/Material_").concat(t.id,"/Texture_").concat(t.alphaMap.id,"_opacity.outputs:r>")),o.push("".concat(" ","float inputs:opacityThreshold = 0.0001")),c.push(r(t.alphaMap,"opacity"))):o.push("".concat(" ","float inputs:opacity = ").concat(t.opacity)),t.isMeshPhysicalMaterial&&(null!==t.clearcoatMap?(o.push("".concat(" ","float inputs:clearcoat.connect = </Materials/Material_").concat(t.id,"/Texture_").concat(t.clearcoatMap.id,"_clearcoat.outputs:r>")),c.push(r(t.clearcoatMap,"clearcoat",new a.Q1f(t.clearcoat,t.clearcoat,t.clearcoat)))):o.push("".concat(" ","float inputs:clearcoat = ").concat(t.clearcoat)),null!==t.clearcoatRoughnessMap?(o.push("".concat(" ","float inputs:clearcoatRoughness.connect = </Materials/Material_").concat(t.id,"/Texture_").concat(t.clearcoatRoughnessMap.id,"_clearcoatRoughness.outputs:g>
1")),c.push(r(t.clearcoatRoughnessMap,"clearcoatRoughness",new a.Q1f(t.clearcoatRoughness,t.clearcoatRoughness,t.clearcoatRoughness)))):o.push("".concat(" ","float inputs:clearcoatRoughness = ").concat(t.clearcoatRoughness)),o.push("".concat(" ","float inputs:ior = ").concat(t.ior))),'\n def Material "Material_'.concat(t.id,'"\n {\n def Shader "PreviewSurface"\n {\n uniform token info:id = "UsdPreviewSurface"\n').concat(o.join("\n"),"\n int inputs:useSpecularWorkflow = 0\n token outputs:surface\n }\n\n token outputs:surface.connect = </Materials/Material_").concat(t.id,"/PreviewSurface.outputs:surface>\n\n").concat(c.join("\n"),"\n\n }\n")}(r,n,e))}return'def "Materials"\n{\n'.concat(o.join(""),"\n}\n\n")}(f,d,n.quickLookCompatible),e[c]=(0,o._u)(s),s=null,d){let t=d[m];if(!0===t.isCompressedTexture){if(null===this.textureUtils)throw Error("THREE.USDZExporter: setTextureUtils() must be called to process compressed textures.");t=await this.textureUtils.decompress(t)}let a=function(t,n,e){if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap){let a=e/Math.max(t.width,t.height),o=document.createElement("canvas");o.width=t.width*Math.min(1,a),o.height=t.height*Math.min(1,a);let c=o.getContext("2d");return!0===n&&(c.translate(0,o.height),c.scale(1,-1)),c.drawImage(t,0,0,o.width,o.height),o}throw Error("THREE.USDZExporter: No valid image data found. Unable to process texture.")}(t.image,t.flipY,n.maxTextureSize),o=await new Promise(t=>a.toBlob(t,"image/png",1));e["textures/Texture_".concat(m,".png")]=new Uint8Array(await o.arrayBuffer())}let m=0;for(let t in e){let n=e[t],a=63&(m+=34+t.length);if(4!==a){let o=new Uint8Array(64-a);e[t]=[n,{extra:{12345:o}}]}m=n.length}return(0,o.L)(e,{level:0})}constructor(){this.textureUtils=null}}function r(){return'#usda 1.0\n(\n customLayerData = {\n string creator = "Three.js USDZExporter"\n }\n defaultPrim = "Root"\n metersPerUnit = 1\n upAxis = "Y"\n)\n\n'}function i(t){let n=t.elements;return"( ".concat(s(n,0),", ").concat(s(n,4),", ").concat(s(n,8),", ").concat(s(n,12)," )")}function s(t,n){return"(".concat(t[n+0],", ").concat(t[n+1],", ").concat(t[n+2],", ").concat(t[n+3],")")}function l(t,n){if(void 0===t)return Array(n).fill("(0, 0, 0)").join(", ");let e=[];for(let n=0;n<t.count;n++){let a=t.getX(n),o=t.getY(n),c=t.getZ(n);e.push("(".concat(a.toPrecision(7),", ").concat(o.toPrecision(7),", ").concat(c.toPrecision(7),")"))}return e.join(", ")}function u(t){return"(".concat(t.r,", ").concat(t.g,", ").concat(t.b,")")}function p(t){return"(".concat(t.x,", ").concat(t.y,")")}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.