{"version":3,"file":"fikoyt-shared-fiko-ai-3d-yukleyici-BTQDTTpr.mjs","sources":["../../../projects/shared/src/lib/service/fikoyt-ui/src/lib/fiko-three-js/IFikoThreeJS/fiko-ai-3d/fiko-ai-3d-yukleyici.ts"],"sourcesContent":["/**\n * ComfyUI'dan gelen 3D dosyayi (GLB/GLTF/STL/OBJ/PLY) FikoYT sahnesine ekler.\n *\n * NOT (renk): STL formati renk/doku tasimaz. Trellis2 is akisi dokulu **GLB**\n * uretir; renkli sonuc icin GLB kullanilir, STL yalnizca yedek yoldur.\n */\nimport * as THREE from 'three';\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';\nimport { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js';\nimport { FikoCizimGLB } from '../FikoThreeCam/FikoCizimGLB';\nimport { FikoCizimSTL } from '../FikoThreeCam/FikoCizimSTL';\nimport { fikoOlcekleVeOturt as boyutlandir } from '../FikoThreeCam/FikoSTLDisaAktar';\n\n/** GLB/GLTF -> FikoCizimGLB (renkli, dokulu). */\nasync function glbYukle(sahne: any, veri: ArrayBuffer, ad: string, hedefBoyutMm: number): Promise {\n const gltf: any = await new Promise((cozum, hata) => {\n new GLTFLoader().parse(veri, '', cozum, hata);\n });\n\n const cizim: any = new FikoCizimGLB(sahne, ad);\n const cocuklar = [...(gltf.scene?.children ?? [])];\n if (!cocuklar.length) throw new Error('GLB icinde geometri yok.');\n cizim.add(...cocuklar);\n\n cizim.traverse((e: any) => {\n if (e.isMesh) {\n e.castShadow = true;\n e.receiveShadow = true;\n const m: any = e.material;\n if (m) {\n m.side = THREE.DoubleSide;\n m.polygonOffset = true;\n m.polygonOffsetFactor = 1;\n m.polygonOffsetUnits = 1;\n if (m.map) m.map.colorSpace = THREE.SRGBColorSpace; // renkler dogru gorunsun\n m.needsUpdate = true;\n }\n e.geometry?.computeVertexNormals?.();\n }\n });\n\n boyutlandir(cizim, hedefBoyutMm);\n return cizim;\n}\n\n/** STL -> FikoCizimSTL (tek renk; STL doku tasimaz). */\nasync function stlYukle(sahne: any, veri: ArrayBuffer, ad: string, hedefBoyutMm: number): Promise {\n const geo: any = new STLLoader().parse(veri);\n geo.computeVertexNormals();\n const renkliMi = !!geo.getAttribute?.('color');\n const mat = new THREE.MeshStandardMaterial({\n color: renkliMi ? 0xffffff : 0xb8c4d0,\n vertexColors: renkliMi,\n metalness: 0.1, roughness: 0.75, side: THREE.DoubleSide\n });\n const cizim: any = new FikoCizimSTL(sahne, ad);\n cizim.add(new THREE.Mesh(geo, mat));\n boyutlandir(cizim, hedefBoyutMm);\n return cizim;\n}\n\n/**\n * Blob'u sahneye ekler. anaGosterim = FikoThreeJsComponent (fikoThreejs).\n * Donen deger: olusturulan FikoCizim nesnesi.\n */\nexport async function fikoAi3DSahneyeEkle(\n anaGosterim: any,\n blob: Blob,\n dosyaAdi: string,\n hedefBoyutMm = 100\n): Promise {\n const sahne = anaGosterim?.sahneler?.[0];\n if (!sahne) throw new Error('Aktif sahne bulunamadi.');\n\n const uzanti = (dosyaAdi.split('.').pop() || '').toLowerCase();\n const veri = await blob.arrayBuffer();\n\n let cizim: any;\n if (uzanti === 'glb' || uzanti === 'gltf') {\n cizim = await glbYukle(sahne, veri, dosyaAdi, hedefBoyutMm);\n } else if (uzanti === 'stl') {\n cizim = await stlYukle(sahne, veri, dosyaAdi, hedefBoyutMm);\n } else {\n throw new Error('Desteklenmeyen 3D format: .' + uzanti);\n }\n\n cizim.userData['fikoKaynak'] = 'ComfyUI / FikoYT-img2-3d';\n\n // Aktif sahnenin cizimler grubuna ekle (yoksa dogrudan sahneye)\n const hedef = sahne.cizimler ?? sahne;\n if (typeof hedef.ekle === 'function') hedef.ekle(cizim);\n else hedef.add(cizim);\n\n anaGosterim.ciz?.();\n anaGosterim.FikoYT?.degisti?.emit?.();\n try { sahne.ekranaSigdir?.(sahne); } catch { /* yoksay */ }\n\n return cizim;\n}\n"],"names":["boyutlandir"],"mappings":"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"}