{"_id":"3d-scene-creator","_rev":"10-5856b12a62eb8cb393a1d21f5ac4c7ca","name":"3d-scene-creator","dist-tags":{"latest":"1.0.1"},"versions":{"0.0.2":{"name":"3d-scene-creator","version":"0.0.2","keywords":["threejs","3d","orbitcontrols"],"author":{"name":"Davide Carlier"},"license":"MIT","_id":"3d-scene-creator@0.0.2","maintainers":[{"name":"davidecarlier","email":"davide.carlier@gmail.com"}],"homepage":"https://github.com/davidecarlier/3d-scene-creator#readme","bugs":{"url":"https://github.com/davidecarlier/3d-scene-creator/issues"},"dist":{"shasum":"857f0b44b7aeeafe8f677cc148d3469e93238179","tarball":"https://registry.npmjs.org/3d-scene-creator/-/3d-scene-creator-0.0.2.tgz","fileCount":13,"integrity":"sha512-VpxLmeCBGj0hzb+8jzrrtyktpEX4pIHwzR/NR1wmD2hORnZYYQC773++TNE663JQKjzF9Lr8ZNc8u3MkyaJuaw==","signatures":[{"sig":"MEQCICfhg4IpEd3lsVthR+M4P9W5aeN+piM4TsFrVBnP5eV0AiAUZ0SO/1W9Xs3mdQ9Ly+VWFYDfYet3cwkTWAWaI/yNTQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31101,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjR9NAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpBxhAAkDdErHs5+i9KF8rJx94iIurZCs6zxAB+eiDuVKiSoFxmSyqY\r\nJdy1l0dmA1BuQe44/ZLrfK49b0+ZaZ5QecZ9Q5YT+An/n3rqBPAv68SjdBzr\r\nD1eUtOlRWJ3VvnrSXny1ZQV7QY4vb2NSAc3aLMYVcn7JoS9HQFUUCNo6cbV4\r\nW46vtF+jqn8L0CDSdOcmSvZx64tccFNdWv/C+1UiNzZj+/h7jqmdV38CQ/aO\r\nfihD7Fq69IlyA3HBlWmT1ZntLqsZGJP0WyGrIAZAx23ZfL5smU5MD/19URRy\r\nfxA+y0Zoef/NJHhtjk0s16hJ5fyqKK7zIJYlK8wSdShPYcMh24UwNf0GDWkw\r\nxwWd6DbpchJ/LuDH967kCN8ZxPwXqECDpH6amivp/aEofmI/Bu9swtpIRPYK\r\ng6MdLbcfIkDTNieE/UR9xZPuYEPLRyKWv59Kgrbwy5aEPysA69RCgxp+JREx\r\nE8Rc9uCNMrvXFJImu/p83QKzr404mVYyVaGi+ZaKdvaJ6uofPxDVX2IRquGV\r\nUv7te9jUV+WXaokLH8xAFOum273QhKyoBEKsTuwoYZ0YJKWRRswWtZQHXjas\r\nws7l7nSj6eaD0dC7pQ3O36PEbfVVeWzU5dGWNjcx3ykImmrO8do2T2NmtWIQ\r\nd+xg3RH/lM0ulkN6csqCbyuxOP3qRPsDUCA=\r\n=qKdu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"d8335a05d3d6617739b0946712c987d29813de8f","scripts":{"dev":"vite","build":"tsc && vite build","serve":"vite preview"},"_npmUser":{"name":"davidecarlier","email":"davide.carlier@gmail.com"},"repository":{"url":"git+https://github.com/davidecarlier/3d-scene-creator.git","type":"git"},"_npmVersion":"8.15.0","description":"Easily add 3D interactive scenes to your website.","directories":{"example":"examples"},"_nodeVersion":"16.17.1","dependencies":{"gsap":"^3.11.3","three":"^0.145.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^3.1.7","typescript":"^4.8.4","@types/three":"^0.144.0","vite-plugin-dts":"^1.6.5"},"_npmOperationalInternal":{"tmp":"tmp/3d-scene-creator_0.0.2_1665651519941_0.8453971761127941","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"3d-scene-creator","version":"0.0.3","keywords":["three","threejs","typescript","webgl","3d","orbitcontrols"],"author":{"name":"Davide Carlier"},"license":"MIT","_id":"3d-scene-creator@0.0.3","maintainers":[{"name":"davidecarlier","email":"davide.carlier@gmail.com"}],"homepage":"https://github.com/davidecarlier/3d-scene-creator#readme","bugs":{"url":"https://github.com/davidecarlier/3d-scene-creator/issues"},"dist":{"shasum":"dccf3199b5be44ca3dffb56bf724e902118abb6e","tarball":"https://registry.npmjs.org/3d-scene-creator/-/3d-scene-creator-0.0.3.tgz","fileCount":13,"integrity":"sha512-kJlbHtrjnDPGNQcJJI+IFgO9eVLxohYXX9o0ExzsvKGjDOdpu3l8OvB/DTf0spJtPcx0zoYCJGbUiuiE6K1yrQ==","signatures":[{"sig":"MEYCIQDNpESyASYYzNED1lPgPIjAo1cd479BYusmP1QjS2Qx1QIhAOrKrQny5a9ssbk3oVHTa1KxinocGVweDI1u7PkkUgDG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjR9vpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoTNQ/9E+GfosudJM+3kL5k9BnPzrM7PF7zLa85I0F1SpgMmanceBpB\r\nClPkZeUmJ9anVqSw+b4JTJReiWHBBdCczczjs4Uz1EyZRQhuinuStYNzOyLC\r\nqLGkbLltRGsja/yA5uS9bDaXnJKZTVY6UJdsCJQ6YJ56fxdimLxyoBlmwmsN\r\nE0P3/qLNaYznNow6e+hl/v8nlLCYgqY4jB81sMguqXq2lVbyOdIj0RKEBMfF\r\nv91StD/Xh5dlpLoBLHN60/78hq868Brtxgv/xOwJB1XfPwJ0K+IijeZuKNkl\r\nhLx9UIxDzwNFNrW1HgKL+Ab8/q0B8g9RjSG08XTdtZ87wXK2E9UQNHxDfu2/\r\nO8N5DAvYMAGzEdv9Hhq5TCjzcGkwftTUPXVWtwL/0A73eBxs3pzRgDbzHR2t\r\n6fvAos/eXvwInfLpSR5GprORNmfbQL4VZFPOcJ5PGtptdsa+rycbi3U+YSiq\r\nLpa8lJTo2z77tw7WW0SBCWLFaxu7SuCpEfOLUB13Rktyi1cXzvTGPHwh1DGy\r\nDgjAa1Bgg5JutRJ8qmct25q8pRnBfsVIizU/Enajls/etaNSVZ47HtYjTN1l\r\nEogZ/qs/ZtKabe7Vv2UBvOuh3ZvEqDF5pSbqCAHPOIvLN8zaSdZyD4fEcW+o\r\n7XLf70xCRbcVoMXP7yMqBC9DwA6a9EZZESE=\r\n=+RN6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"8009ea8c847869d31957419ae05188ce1485a649","scripts":{"dev":"vite","build":"tsc && vite build","serve":"vite preview"},"_npmUser":{"name":"davidecarlier","email":"davide.carlier@gmail.com"},"repository":{"url":"git+https://github.com/davidecarlier/3d-scene-creator.git","type":"git"},"_npmVersion":"8.15.0","description":"A simple utility to create and manage 3D scenes","directories":{"example":"examples"},"_nodeVersion":"16.17.1","dependencies":{"gsap":"^3.11.3","three":"^0.145.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^3.1.7","typescript":"^4.8.4","@types/three":"^0.144.0","vite-plugin-dts":"^1.6.5"},"_npmOperationalInternal":{"tmp":"tmp/3d-scene-creator_0.0.3_1665653736911_0.44283037828574146","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"3d-scene-creator","version":"0.0.4","keywords":["three","threejs","typescript","webgl","3d","orbitcontrols"],"author":{"name":"Davide Carlier"},"license":"MIT","_id":"3d-scene-creator@0.0.4","maintainers":[{"name":"davidecarlier","email":"davide.carlier@gmail.com"}],"homepage":"https://github.com/davidecarlier/3d-scene-creator#readme","bugs":{"url":"https://github.com/davidecarlier/3d-scene-creator/issues"},"dist":{"shasum":"602c654a39917f3aa5a547f1bb0d293182838062","tarball":"https://registry.npmjs.org/3d-scene-creator/-/3d-scene-creator-0.0.4.tgz","fileCount":12,"integrity":"sha512-sDtfP7IbzV0Z6cxpiMYhxAtZi0/jKHQzKrHK3kY9nisb34aiTUVPyHVB/Je6kHVbpEqFmkptcmnWhmD3d20HzA==","signatures":[{"sig":"MEQCIHD6nnIpqWe0IkiZDTZ+/qF4zd/EU1q+tJi7+fbjrrdjAiBECINGWjTx/A6qcn1470LgZ9JbQl+6ax7p/nSSpodVjg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjSERnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqDfw//XedBYMAb0nsaUmTBT4m77KtR8GO/VE9Sux54QCJO5caHeOVw\r\n6BM2bW7fztwWwOZMYgin6z3b4LUSYCJMhCUaAitZN3+Gq/XLlGp4smgkrp2o\r\n5uAATp0ijT5aYRQco5i5bHojWI4nLk/W5VDsBBTjCRnyl3YD0dkIbPGEcVzY\r\nUlwR+qwsDb+p3PFJlQ25ahU5z1OBDhcFlTC3HfW3QBW8HuqKg/l6F1SRZoRn\r\n862QLVG2dw8zzkDIa4Tsu/lYnANNQfybK+3YzWnpFNWoHls4RxzATgmDXvUZ\r\nkPlulTFk9ZkxglsO6HsQ8vT1FO2o4YaTKxMpLSVVPLLSZU1s0oaeRPLTGPPz\r\njjxYONow1OVAoJ54zAz4mQjNFYwPw2JnPllAlWLTU3a6g9RZpLYldrS1yiPb\r\nFbo3AIJ7cWirNgcgFbFBdr3XyVHZQEQHKlnGEOw/HNdvgHmeG7/C+QQtr9vk\r\nWh/TKNlDe6XkwixZx4p7hCvsz016rPLytwosbzO+RtXgufU9MbIBR9JZU4Ro\r\nDa9ZobGUOvYbLog4LUMDN0JK4GeVgN1fNIYS86Y4Feh3IUQi1QiqY8LbrHpP\r\nRtx45vvmaTUZnCpy1J2KxeiBFVN0DEpfOGWc8Nq8/GpvfTU0pHVYKABUW1NO\r\n6sGXE/LXn67g8TGjhia2xbJr1j00mJ8rz60=\r\n=FNtr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"2b9a7bf3f2c92b8d05e3494a87f7a0156778480c","scripts":{"dev":"vite","build":"tsc && vite build","serve":"vite preview"},"_npmUser":{"name":"davidecarlier","email":"davide.carlier@gmail.com"},"repository":{"url":"git+https://github.com/davidecarlier/3d-scene-creator.git","type":"git"},"_npmVersion":"8.15.0","description":"A simple utility to create and manage 3D scenes","directories":{"example":"examples"},"_nodeVersion":"16.17.1","dependencies":{"gsap":"^3.11.3","three":"^0.145.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^3.1.7","typescript":"^4.8.4","@types/three":"^0.144.0","vite-plugin-dts":"^1.6.5"},"_npmOperationalInternal":{"tmp":"tmp/3d-scene-creator_0.0.4_1665680487271_0.34268239577020143","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"3d-scene-creator","version":"0.0.5","keywords":["three","threejs","typescript","webgl","3d","orbitcontrols"],"author":{"name":"Davide Carlier"},"license":"MIT","_id":"3d-scene-creator@0.0.5","maintainers":[{"name":"davidecarlier","email":"davide.carlier@gmail.com"}],"homepage":"https://github.com/davidecarlier/3d-scene-creator#readme","bugs":{"url":"https://github.com/davidecarlier/3d-scene-creator/issues"},"dist":{"shasum":"b47b01d91fab4f987233456e9b67d7e249f367d3","tarball":"https://registry.npmjs.org/3d-scene-creator/-/3d-scene-creator-0.0.5.tgz","fileCount":9,"integrity":"sha512-LmPVe6ukHB7FGKVE31Ny1R2OQKoqAnSBL6hlkqPn6lFHaw7cxlRoWYwsbJFXP06if/HxlwwpXJaYDiRf5AwE+Q==","signatures":[{"sig":"MEYCIQC6fmdXUl/ZIROium+wTnSUXaCqx5d1J5bb3nzSjxFLkgIhAK6rUcuRX3rKIs8NNDZCKHOjsGMw4ylOheyhiQPQkmSI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24925,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0BbuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrV/g//bZoxfhFWDXlTXHhEiIcuUlTmU4VB8z7W1Qq+xi4dDv0RVd51\r\nB1dQAGwBgFJ6mKvDTRgDrz7vn3u0NniwJDg3Hkorloi0NcCJYzCeTBU/JpZ6\r\nbBBFhJvXBxC5aKpeuRVXcHgjlbj4zFNFFCcTOQwFqnRs6CexBSJPBBq6VZkt\r\nqrYAi8g/+Xy9+BCZrFvBYcUUl2ipNBenNzQsudHDiZi79hxe/10HKpRERKpv\r\nOPvteytYw3kVAWoLQgNY5r5M5QcFOHzqRpa8Bgvw/fkBiPkyydeK3J9EGrXb\r\n2Bt+2+oqZrOoqip68P8zvvqNx7DqUiTp1bxWF5kPNCEEFKWIdMW5wBATEhX8\r\nlhbgNXiJyAOhwivK8XYYmcGgpKmPxrlL+ITnhFXaxrAwOX6jJXMhobtKgRV8\r\nSgR+wUwq268OVJMLzv9kqExCCfk4BtQeFJYDk6JZxceYhphs8/5+HBO6rMzO\r\nkILkFGFPX73NA/zIA0qp2lG9BRkG5J+aQ52mjJIeR53OXXP4eITi33XEzEj3\r\nWw3x5VZJJKP//C0PuhcyezX/oq6kIlt+KEAlapqykHZ0xAKFHXc2lcPbIjcu\r\nSA2scZYSAFmyFXSVoj0CZP52WzQ7WVTSisqbKGNbmdKALLSLJ1XP+xhCFJTR\r\nPXAgpHB7sJtAqXVYOQTg51nEe6P1LKBGYDE=\r\n=Rpl3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"e409efba7d8c5dccbf44247b6d87fb57c07fbdf8","scripts":{"dev":"vite","build":"tsc && vite build","serve":"vite preview"},"_npmUser":{"name":"davidecarlier","email":"davide.carlier@gmail.com"},"repository":{"url":"git+https://github.com/davidecarlier/3d-scene-creator.git","type":"git"},"_npmVersion":"8.19.2","description":"A simple utility to create and manage 3D scenes","directories":{"example":"examples"},"_nodeVersion":"18.12.1","dependencies":{"gsap":"^3.11.3","three":"^0.145.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^3.1.7","typescript":"^4.8.4","@types/three":"^0.144.0","vite-plugin-dts":"^1.6.5"},"_npmOperationalInternal":{"tmp":"tmp/3d-scene-creator_0.0.5_1674581742457_0.45733449202976884","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"3d-scene-creator","version":"0.1.0","keywords":["three","threejs","typescript","webgl","3d","orbitcontrols"],"author":{"name":"Davide Carlier"},"license":"MIT","_id":"3d-scene-creator@0.1.0","maintainers":[{"name":"davidecarlier","email":"davide.carlier@gmail.com"}],"homepage":"https://github.com/davidecarlier/3d-scene-creator#readme","bugs":{"url":"https://github.com/davidecarlier/3d-scene-creator/issues"},"dist":{"shasum":"1cc9f2a62914c960c92a515f38d4821dc5fab8de","tarball":"https://registry.npmjs.org/3d-scene-creator/-/3d-scene-creator-0.1.0.tgz","fileCount":11,"integrity":"sha512-iRdFOEP9Of65sdsHRhfWCTG+bwWR6YboHh3goAf+COpo3nnWOtG21/Vuv5A77l3n+G84xFBg8P6htBI1KNsVbw==","signatures":[{"sig":"MEUCIFFAjwxvdKT0I2r/8GNVk6wPQVx98DlAtf6DaTE8St57AiEAz9S7vUGd/ZztvSa1kqLDRR0ULusKMPVZ49fAF7w+vak=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51702},"main":"dist/main.js","types":"./dist/main.d.ts","gitHead":"7f4c1550edde22695e8c6f188be1f3e617ce6a2d","scripts":{"dev":"vite","build":"tsc && vite build","serve":"vite preview"},"_npmUser":{"name":"davidecarlier","email":"davide.carlier@gmail.com"},"repository":{"url":"git+https://github.com/davidecarlier/3d-scene-creator.git","type":"git"},"_npmVersion":"11.6.2","description":"A simple utility to create and manage 3D scenes","directories":{"example":"examples"},"_nodeVersion":"24.13.0","dependencies":{"gsap":"^3.11.3","three":"^0.145.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.1","typescript":"^4.8.4","@types/three":"^0.144.0","vite-plugin-dts":"^1.6.5"},"_npmOperationalInternal":{"tmp":"tmp/3d-scene-creator_0.1.0_1773910998279_0.8166328412078057","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"3d-scene-creator","version":"0.2.0","keywords":["three","threejs","typescript","webgl","3d","orbitcontrols"],"author":{"name":"Davide Carlier"},"license":"MIT","_id":"3d-scene-creator@0.2.0","maintainers":[{"name":"davidecarlier","email":"davide.carlier@gmail.com"}],"homepage":"https://github.com/davidecarlier/3d-scene-creator#readme","bugs":{"url":"https://github.com/davidecarlier/3d-scene-creator/issues"},"dist":{"shasum":"888e7873d92864f1d9cb4cfee99abcfb818a846d","tarball":"https://registry.npmjs.org/3d-scene-creator/-/3d-scene-creator-0.2.0.tgz","fileCount":11,"integrity":"sha512-0Jg8uNu0fIMdTrNgZYPbhx5VNF7oAnZN2oFv8rdRjtEpgU+JjyKwZuD/Ut2d/LBP5se9Y9XPKWWI+vWmOSXwgA==","signatures":[{"sig":"MEUCIQC5Bc7pFSTLrSqvaEPZwxcJYMuEA9Rf3VmCkzNEHEkiKgIgY+UXFUT0F82jis/MHjBZj7SByDhQbT4TmdEwcoZu20I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68154},"main":"dist/main.js","types":"dist/src/main.d.ts","module":"dist/main.js","exports":{".":{"types":"./dist/src/main.d.ts","import":"./dist/main.js","require":"./dist/main.umd.js"}},"gitHead":"23c58e082f5675835e3a607e4f9fd6cde2895b0c","scripts":{"dev":"vite","build":"tsc && vite build","serve":"vite preview"},"_npmUser":{"name":"davidecarlier","email":"davide.carlier@gmail.com"},"repository":{"url":"git+https://github.com/davidecarlier/3d-scene-creator.git","type":"git"},"_npmVersion":"11.11.0","description":"A simple utility to create and manage 3D scenes","directories":{"example":"examples"},"_nodeVersion":"24.14.1","dependencies":{"gsap":"^3.11.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.1","typescript":"^6.0.0","@types/three":"^0.184.0","vite-plugin-dts":"^5.0.1"},"peerDependencies":{"three":">=0.145.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-scene-creator_0.2.0_1780245084760_0.33102733026459275","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"3d-scene-creator","version":"1.0.0","keywords":["three","threejs","typescript","webgl","3d","orbitcontrols"],"author":{"name":"Davide Carlier"},"license":"MIT","_id":"3d-scene-creator@1.0.0","maintainers":[{"name":"davidecarlier","email":"davide.carlier@gmail.com"}],"homepage":"https://3dscenecreator.netlify.app","bugs":{"url":"https://github.com/davidecarlier/3d-scene-creator/issues"},"dist":{"shasum":"d2fbae429716716331ce33b18dcb928bd09ec446","tarball":"https://registry.npmjs.org/3d-scene-creator/-/3d-scene-creator-1.0.0.tgz","fileCount":26,"integrity":"sha512-SwCqBYx4tpA5LpqIXv1pbxiLiT0Ag0iPmYcKWKFqYSE5aQcqThRQwN63Zrbpx+AY1WWhX6IY3Ls2QqGdZAN6Cg==","signatures":[{"sig":"MEUCIAJkTyZxvvu8rfslRBoIjQ0kCqeTYeIe0ntibPzE50CmAiEAs8uVAsXuShrZ0mfkpfVRp+Dp+f/4MLVvIUhC28PscEE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5636187},"main":"dist/main.js","_from":"file:3d-scene-creator-1.0.0.tgz","types":"dist/src/main.d.ts","module":"dist/main.js","exports":{".":{"types":"./dist/src/main.d.ts","import":"./dist/main.js","require":"./dist/main.umd.js"}},"scripts":{"dev":"vite --config vite.website.config.js","build":"pnpm build:lib","serve":"vite preview --config vite.website.config.js","build:lib":"tsc && vite build","build:website":"vite build --config vite.website.config.js && mkdir -p public/examples/360-beach && cp website/examples/360-beach/kris-guico-rsB-he-ye7w-unsplash.jpg public/examples/360-beach/"},"_npmUser":{"name":"davidecarlier","email":"davide.carlier@gmail.com"},"_resolved":"/private/var/folders/y3/rkx7dzw93g5cbmb_g8t2t2yh0000gp/T/f2269ea3e7b3b0c76358440ee2fbb1e1/3d-scene-creator-1.0.0.tgz","_integrity":"sha512-SwCqBYx4tpA5LpqIXv1pbxiLiT0Ag0iPmYcKWKFqYSE5aQcqThRQwN63Zrbpx+AY1WWhX6IY3Ls2QqGdZAN6Cg==","repository":{"url":"git+https://github.com/davidecarlier/3d-scene-creator.git","type":"git"},"_npmVersion":"11.11.0","description":"A simple utility to create and manage 3D scenes","directories":{"example":"examples"},"_nodeVersion":"24.14.1","dependencies":{"cannon-es":"^0.20.0","@tweenjs/tween.js":"^25.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.1","typescript":"^6.0.0","@types/three":"^0.184.0","vite-plugin-dts":"^5.0.1"},"peerDependencies":{"three":">=0.145.0"},"_npmOperationalInternal":{"tmp":"tmp/3d-scene-creator_1.0.0_1782469837960_0.6039709203088353","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"3d-scene-creator","version":"1.0.1","devDependencies":{"@types/three":"^0.184.0","typescript":"^6.0.0","vite":"^8.0.1","vite-plugin-dts":"^5.0.1"},"peerDependencies":{"three":">=0.145.0"},"main":"dist/main.js","module":"dist/main.js","types":"dist/src/main.d.ts","exports":{".":{"types":"./dist/src/main.d.ts","import":"./dist/main.js","require":"./dist/main.umd.js"}},"dependencies":{"@tweenjs/tween.js":"^25.0.0","cannon-es":"^0.20.0"},"description":"A simple utility to create and manage 3D scenes","directories":{"example":"examples"},"repository":{"type":"git","url":"git+https://github.com/davidecarlier/3d-scene-creator.git"},"keywords":["three","threejs","typescript","webgl","3d","orbitcontrols"],"author":{"name":"Davide Carlier"},"license":"MIT","bugs":{"url":"https://github.com/davidecarlier/3d-scene-creator/issues"},"homepage":"https://3dscenecreator.netlify.app","scripts":{"dev":"vite --config vite.website.config.js","build":"pnpm build:lib","build:lib":"tsc && vite build","build:website":"vite build --config vite.website.config.js && mkdir -p public/examples/360-beach && cp website/examples/360-beach/kris-guico-rsB-he-ye7w-unsplash.jpg public/examples/360-beach/","serve":"vite preview --config vite.website.config.js"},"_id":"3d-scene-creator@1.0.1","_integrity":"sha512-4jB7SomP0GuPHdZkx14+EKN54C1kQ7CDoToI9u8XyB21+zR5P+zSgqE/2p+gO7a2BON1WJJEAC6I5qrTvMNPdg==","_resolved":"/private/var/folders/y3/rkx7dzw93g5cbmb_g8t2t2yh0000gp/T/a0c98e6bf757b2548cd0aa48e98bd594/3d-scene-creator-1.0.1.tgz","_from":"file:3d-scene-creator-1.0.1.tgz","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-4jB7SomP0GuPHdZkx14+EKN54C1kQ7CDoToI9u8XyB21+zR5P+zSgqE/2p+gO7a2BON1WJJEAC6I5qrTvMNPdg==","shasum":"1909190c6427358d64fa5b220f67d86c2e7cf445","tarball":"https://registry.npmjs.org/3d-scene-creator/-/3d-scene-creator-1.0.1.tgz","fileCount":11,"unpackedSize":127701,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFODKdSBeRlm5rO6J6wnrYqjDhb7J1amxCZzilri6M6tAiEA8RjdS3ek+V71zO1UVeITJUSvl7jBjIEwApCBJVmhKuc="}]},"_npmUser":{"name":"davidecarlier","email":"davide.carlier@gmail.com"},"maintainers":[{"name":"davidecarlier","email":"davide.carlier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/3d-scene-creator_1.0.1_1782470376295_0.8534866002612387"},"_hasShrinkwrap":false}},"time":{"created":"2022-10-13T08:58:39.940Z","modified":"2026-06-26T10:39:36.555Z","0.0.1":"2021-11-22T21:40:11.026Z","0.0.2":"2022-10-13T08:58:40.163Z","0.0.3":"2022-10-13T09:35:37.105Z","0.0.4":"2022-10-13T17:01:27.453Z","0.0.5":"2023-01-24T17:35:42.639Z","0.1.0":"2026-03-19T09:03:18.430Z","0.2.0":"2026-05-31T16:31:24.965Z","1.0.0":"2026-06-26T10:30:38.181Z","1.0.1":"2026-06-26T10:39:36.442Z"},"bugs":{"url":"https://github.com/davidecarlier/3d-scene-creator/issues"},"author":{"name":"Davide Carlier"},"license":"MIT","homepage":"https://3dscenecreator.netlify.app","keywords":["three","threejs","typescript","webgl","3d","orbitcontrols"],"repository":{"type":"git","url":"git+https://github.com/davidecarlier/3d-scene-creator.git"},"description":"A simple utility to create and manage 3D scenes","maintainers":[{"name":"davidecarlier","email":"davide.carlier@gmail.com"}],"readme":"# 3D Scene Creator\n\nA tiny, type-safe toolkit for building interactive 3D scenes on top of Three.js:\nlighting, controls, model loading, animation, physics and click-to-pick, behind\na fluent API.\n\n**[Live demo &amp; examples](https://3dscenecreator.netlify.app)** ·\n**[API reference](https://3dscenecreator.netlify.app/docs.html)**\n\n## Features\n- 🎬 The SceneCreator class wraps Three.js and tween.js to provide a simple API to load models, animate objects, and setup 3D scenes\n- ⚡ **Optimized render function**: only renders when something is moving\n- 🎯 **Type-safe API**: Full TypeScript support with JSDoc documentation\n- 🔧 **Method chaining**: All methods return `this` for fluent API\n- 🎨 **Easy animations**: Color, opacity, position, and camera animations\n- 🎮 **Camera controls**: Built-in OrbitControls with customizable settings\n- 💡 **Configurable lighting rig**: Hemisphere + key/fill directional lights, soft shadows, and ACES tone mapping out of the box\n- 📦 **glTF/GLB loading with caching**: Load once, clone many: ideal for instancing buildings, units, and props\n- 🌅 **360° Skybox support**: Load panoramic images as backgrounds\n- 💾 **Resource cleanup**: Automatic memory management with `dispose()` method\n- 🎯 **Interactive mesh picking**: Click, hover, and right-click detection on 3D objects, with click-vs-drag discrimination on mouse and touch\n- 🧲 **Rigid-body physics**: Optional cannon-es integration: gravity, ground planes, and mesh-linked bodies stepped and synced automatically\n\n\n## Usage\n### Install\n\n`three` is a **peer dependency** (`>=0.145.0`), so install it alongside the package:\n\n```bash\nnpm install 3d-scene-creator three\n```\n\nThe package ships both ESM (`import`) and UMD (`require`) builds with bundled TypeScript types.\n\n### Quick Start\n\n```js\nimport { SceneCreator } from \"3d-scene-creator\";\nimport * as THREE from \"three\";\n\n// Create a container\nconst container = document.createElement('div');\ncontainer.style.height = '100vh';\ncontainer.style.width = '100%';\ndocument.body.appendChild(container);\n\n// Create scene\nconst scene = new SceneCreator(container);\n\n// Setup scene with lighting and controls\nscene.addLighting().addControls().addSkybox();\n\nconsole.log(\"Scene ready!\");\n```\n\n### Complete Example with Model Loading\n\n```js\nimport { SceneCreator } from \"3d-scene-creator\";\nimport * as THREE from \"three\";\n\nconst container = document.getElementById('canvas-container');\nconst scene = new SceneCreator(container, 1, new THREE.Vector3(15, 15, 15));\n\n// Setup scene\nscene\n  .addLighting()\n  .addControls()\n  .addSkybox(\"https://example.com/360-image.jpg\");\n\n// Load and animate a model\ntry {\n  const model = await scene.loadModel(\"/models/my-model.json\");\n  model.name = \"MyObject\";\n  \n  // Chain animations\n  scene\n    .animateModelColor(\"MyObject\", \"#ff0000\", 2)\n    .animateModelPosition(\"MyObject\", new THREE.Vector3(5, 0, 0), 3)\n    .animateModelOpacity(\"MyObject\", 0.7, 2);\n} catch (error) {\n  console.error(\"Failed to load model:\", error);\n}\n\n// Move camera with callback\nscene.moveCamera(\n  new THREE.Vector3(20, 20, 20),\n  new THREE.Vector3(0, 0, 0),\n  () => console.log(\"Camera animation complete!\")\n);\n\n// Cleanup when done\nwindow.addEventListener('beforeunload', () => {\n  scene.dispose();\n});\n```\n\n### Loading 3D Models\n\n```js\n// Load with default ObjectLoader (adds the object to the scene)\nawait scene.loadModel(\"/path/to/model.json\");\n\n// Load with custom loader\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';\nconst gltfLoader = new GLTFLoader();\nawait scene.loadModel(\"/path/to/model.glb\", gltfLoader);\n```\n\n#### glTF/GLB with caching\n\n`loadGLTF()` uses a built-in `GLTFLoader` and caches each URL, so loading the\nsame asset many times only fetches and parses it once. It returns a fresh\n**clone** that is *not* added to the scene, so position it and add it yourself.\nPerfect for instancing buildings, units, or props in a game.\n\n```js\n// Fetch + parse once; every call returns an independent clone\nconst tree1 = await scene.loadGLTF(\"/models/tree.glb\");\nconst tree2 = await scene.loadGLTF(\"/models/tree.glb\"); // served from cache\n\ntree1.position.set(0, 0, 0);\ntree2.position.set(5, 0, 2);\nscene.scene.add(tree1, tree2);\n\nscene.applyShadows(); // make the new meshes cast/receive shadows\n```\n\n#### Animated models\n\n`loadAnimatedModel()` loads a rigged glTF, adds it to the scene, applies\nshadows, builds an `AnimationMixer` and wires it into the render loop (which\nkeeps drawing while a clip is playing). It returns a small handle for driving\nplayback. `play()` cross-fades between clips. Unlike `loadGLTF()` it keeps the\noriginal object (not a clone), so the skeleton animates correctly.\n\n```js\nconst robot = await scene.loadAnimatedModel(\"/models/robot.glb\", {\n  autoplay: \"Idle\", // first clip by default; pass false to start paused\n});\n\nconsole.log(robot.names);          // every available clip name\nrobot.play(\"Walking\");             // cross-fade to a looping clip\nrobot.play(\"Wave\", { loop: false }); // play once, hold the final frame\nrobot.stop();                      // fade the current clip out\n```\n\nYou can also register your own mixer if you load a model manually:\n\n```js\nconst mixer = new THREE.AnimationMixer(myModel);\nscene.addMixer(mixer); // advanced automatically every frame\n```\n\n### Camera Controls\n\n```js\n// Add orbit controls with default settings\nscene.addControls();\n\n// Add with custom configuration\nscene.addControls({\n  enableDamping: true,\n  dampingFactor: 0.05,\n  maxDistance: 100,\n  minDistance: 5\n});\n\n// Animate camera\nscene.moveCamera(\n  new THREE.Vector3(10, 20, 20),\n  new THREE.Vector3(0, 5, 0)\n);\n\n// Reset to initial position\nscene.resetCameraPosition();\n```\n\n### Lighting & Shadows\n\n`addLighting()` sets up a game-ready rig: a hemisphere fill, a shadow-casting key\nlight, an opposite fill light, and ACES Filmic tone mapping. Everything has\nsensible defaults and is fully configurable.\n\n```js\n// Recommended default rig (shadows + tone mapping enabled)\nscene.addLighting();\n\n// Fully customized rig\nscene.addLighting({\n  hemisphere: { sky: 0xbcd4ff, ground: 0x3a2c16, intensity: 1.4 },\n  key: { color: 0xfff2dd, intensity: 2.6, position: new THREE.Vector3(8, 16, 10) },\n  fill: { color: 0x9ec3ff, intensity: 0.6, position: new THREE.Vector3(-10, 8, -8) },\n  shadows: true,\n  shadowArea: 16,      // half-size of the key light's shadow frustum\n  shadowMapSize: 2048, // shadow map resolution\n  toneMapping: true,\n  exposure: 1.05,\n});\n\n// Disable individual lights or features\nscene.addLighting({ hemisphere: false, fill: false, shadows: false });\n```\n\nShadows only appear on meshes that opt in. After adding your meshes, call\n`applyShadows()` to flag every mesh in the scene as a shadow caster/receiver:\n\n```js\nscene.addLighting();\n// ...add your meshes...\nscene.applyShadows();          // cast + receive on all meshes\nscene.applyShadows(true, false); // cast only (e.g. units that don't catch shadows)\n```\n\n> **Note:** `addLighting()` adds lights without clearing existing ones, so call it once per scene.\n\n### Skybox / Background\n\n```js\n// Add skybox from 360° image\nscene.addSkybox(\"https://example.com/panorama.jpg\");\n\n// Add colored skybox\nscene.addSkybox(undefined, \"#87CEEB\"); // Sky blue\n\n// Custom named skybox\nscene.addSkybox(\"image.jpg\", \"#000000\", \"my-skybox\");\n```\n\n### Animate Objects\n\n```js\nconst obj = await scene.loadModel(\"/model.json\");\nobj.name = \"Character\";\n\n// Animate color\nscene.animateModelColor(\"Character\", \"red\", 2);\n\n// Animate position\nscene.animateModelPosition(\n  \"Character\", \n  new THREE.Vector3(-5, 2, 10), \n  3\n);\n\n// Animate opacity\nscene.animateModelOpacity(\"Character\", 0.5, 2);\n```\n\n### Interactive Object Picking\n\nEnable interactive object selection with mouse click and hover events:\n\n```js\nimport { SceneCreator } from \"3d-scene-creator\";\nimport * as THREE from \"three\";\n\nconst scene = new SceneCreator(container);\nscene.addLighting().addControls();\n\n// Create some 3D objects...\nconst geometry = new THREE.BoxGeometry(2, 2, 2);\nconst material = new THREE.MeshStandardMaterial({ color: 0xff6b6b });\nconst cube = new THREE.Mesh(geometry, material);\ncube.name = \"MyBox\";\nscene.scene.add(cube);\n\n// Enable picking with callbacks\nscene.enablePicking(\n  // Click callback\n  (object: THREE.Object3D) => {\n    console.log(\"Clicked:\", object.name);\n    // Change color on click\n    if (object instanceof THREE.Mesh) {\n      object.material.color.set(Math.random() * 0xffffff);\n    }\n  },\n  // Hover callback\n  (object: THREE.Object3D | null) => {\n    if (object) {\n      console.log(\"Hovering over:\", object.name);\n      // Highlight on hover\n      if (object instanceof THREE.Mesh) {\n        object.material.emissive.setHex(0xffffff);\n      }\n    } else {\n      console.log(\"Left object\");\n    }\n  }\n);\n\n// Get the currently selected object\nconst selected = scene.getSelectedObject();\n\n// Programmatic picking at specific mouse coordinates\nconst result = scene.pickAt(-0.5, 0.2); // Normalized coordinates (-1 to 1)\nif (result) {\n  console.log(\"Picked object:\", result.object.name);\n  console.log(\"Distance:\", result.distance);\n  console.log(\"Hit point:\", result.point);\n}\n```\n\nClick and tap events are only fired when the pointer barely moves between\npress and release, so orbiting or panning the camera never triggers a spurious\nclick. Tune the sensitivity (in pixels) via `clickDragThreshold` (default `6`):\n\n```js\nscene.clickDragThreshold = 10;\n```\n\nA third callback fires on right-click (context menu) of the hovered object;\nthe default browser menu is suppressed while picking is enabled:\n\n```js\nscene.enablePicking(\n  (obj) => console.log(\"Clicked:\", obj.name),\n  (obj) => console.log(\"Hovering:\", obj?.name ?? \"none\"),\n  (obj) => console.log(\"Right-clicked:\", obj.name) // context menu\n);\n```\n\n### Physics\n\nOpt into rigid-body physics with [cannon-es](https://github.com/pmndrs/cannon-es)\n(MIT). `enablePhysics()` loads cannon-es on demand (a dynamic `import()`), so\nit's `async`: `await` it once, then link any mesh to a body with `addBody()`.\nThe world is stepped every frame and each body's position and rotation are\ncopied back onto its mesh automatically.\n\n```js\nscene.addLighting().addControls();\n\n// Turn on physics and drop in a ground plane.\nawait scene.enablePhysics({ gravity: [0, -12, 0], restitution: 0.4 });\nscene.addGround(0); // static, infinite plane at y = 0\n\n// Any mesh can become a dynamic body. The collision shape is derived from\n// the mesh's bounding box (or sphere) and its scale.\nconst box = new THREE.Mesh(\n  new THREE.BoxGeometry(1, 1, 1),\n  new THREE.MeshStandardMaterial({ color: 0x6366f1 })\n);\nbox.position.set(0, 8, 0);\nbox.castShadow = true;\nscene.scene.add(box);\n\nconst body = scene.addBody(box, { mass: 1, shape: \"box\" });\n// ...the box now falls and rests on the ground, mesh kept in sync each frame.\n\nscene.removeBody(body); // detach when you're done with it\n```\n\nUse `mass: 0` for static bodies, and `shape: \"sphere\"` for rolling objects.\nThe underlying `CANNON.World` is exposed as `scene.physicsWorld` if you need to\nadd constraints, custom materials, or collision events. Because cannon-es is\nimported lazily, bundlers code-split it into its own chunk, so apps that never\ncall `enablePhysics()` don't load it.\n\n### Resource Cleanup\n\nAlways call `dispose()` when done to prevent memory leaks:\n\n```js\nscene.dispose(); // Stops rendering, clears scene, disposes renderer\n```\n\n## API Reference\n\n### SceneCreator Class\n\n#### Constructor\n\n```typescript\nconstructor(\n  container?: HTMLElement,\n  scale?: number,\n  camPos?: THREE.Vector3,\n  targetPos?: THREE.Vector3\n)\n```\n\n#### Methods\n\n**Core Methods**\n- `attachRenderer(container: HTMLElement): this` - Attach renderer to DOM\n- `loadModel(url: string, loader?: THREE.Loader): Promise<Object3D>` - Load a 3D model and add it to the scene\n- `loadGLTF(url: string): Promise<Group>` - Load a glTF/GLB model and return a cached, cloneable Group (not added to the scene)\n- `loadAnimatedModel(url: string, options?: AnimatedModelOptions): Promise<AnimatedModel>` - Load a rigged glTF, add it to the scene, and wire its animation clips into the render loop; returns a playback handle\n- `addMixer(mixer: THREE.AnimationMixer): this` / `removeMixer(mixer): this` - Register/unregister an AnimationMixer driven automatically each frame\n- `dispose(): void` - Clean up resources\n\n**Lighting & Scene Setup**\n- `addLighting(options?: LightingOptions): this` - Add a configurable lighting rig (hemisphere + key/fill lights, shadows, tone mapping)\n- `applyShadows(cast?: boolean, receive?: boolean): this` - Toggle shadow casting/receiving on all meshes in the scene\n- `addSkybox(url?: string, color?: ColorRepresentation, name?: string): this` - Add skybox\n- `addControls(overrides?: object): this` - Add orbit controls\n\n**Camera**\n- `moveCamera(position: Vector3, target?: Vector3, callback?: Function): this` - Animate camera\n- `resetCameraPosition(): this` - Reset to initial position\n\n**Animations**\n- `animateModelColor(name: string, color: string|number, duration?: number): this`\n- `animateModelPosition(name: string, position: Vector3, duration?: number): this`\n- `animateModelOpacity(name: string, value: number, duration?: number): this`\n\n**Interactive Picking**\n- `enablePicking(onClickCallback?: (obj: Object3D) => void, onHoverCallback?: (obj: Object3D | null) => void, onContextMenuCallback?: (obj: Object3D) => void): this` - Enable object picking with click/hover/right-click events\n- `disablePicking(): this` - Disable picking\n- `getSelectedObject(): Object3D | null` - Get currently selected/hovered object\n- `pickAt(mouseX: number, mouseY: number): PickingResult | null` - Pick object at normalized mouse coordinates\n\n**Physics**\n- `enablePhysics(options?: PhysicsOptions): Promise<this>` - Load cannon-es on demand and create the world (gravity, default friction/restitution). `await` before adding bodies\n- `addBody(mesh: Object3D, options?: PhysicsBodyOptions): CANNON.Body` - Link a mesh to a rigid body, synced every frame\n- `addGround(y?: number): CANNON.Body` - Add a static, infinite ground plane\n- `removeBody(body: CANNON.Body): this` - Remove a body and stop syncing its mesh\n- `physicsWorld?: CANNON.World` - The underlying world (for constraints, materials, events)\n\n**Rendering**\n- `startRenderLoop(): this` - Start rendering\n- `stopRenderLoop(): this` - Stop rendering\n- `setAdditionalRenderFn(fn: () => void): this` - Add custom render callback\n\n\n","readmeFilename":"Readme.md"}