{"_id":"@douyin-microapp/microapp-ar-three","_rev":"10-c3cdb14150353c363f47842bc6af8420","name":"@douyin-microapp/microapp-ar-three","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.1":{"name":"@douyin-microapp/microapp-ar-three","version":"0.0.1","license":"MIT","type":"module","source":"src/index.ts","exports":"./dist/index.modern.js","main":"./dist/index.cjs","module":"./dist/index.module.js","unpkg":"./dist/index.umd.js","typings":"./dist/index.d.ts","scripts":{"bundle":"microbundle --tsconfig tsconfig.build.json","build":"yarn bundle","dev":"yarn bundle -- watch --no-compress --no-sourcema --format modern"},"dependencies":{"tslib":"2.3.0"},"peerDependencies":{"three":"*"},"devDependencies":{"@types/three":"^0.129.1"},"description":"降低外部开发者在字节小程序中使用 ThreeJS 对 AI/AR 模型进行渲染的难度。目前支持两种功能：","_id":"@douyin-microapp/microapp-ar-three@0.0.1","_nodeVersion":"15.6.0","_npmVersion":"7.19.1","dist":{"integrity":"sha512-sk/m3xNV6xNQm/drd1/YKe0VRQndCDk+tIBg6YsG7EyAFfW7lsBCbc9H4XFW3qfZrqIk89zNBBJ0ZqJUAtXoyg==","shasum":"56c511b992e83fc839ffb7c5e396823bdfede002","tarball":"https://registry.npmjs.org/@douyin-microapp/microapp-ar-three/-/microapp-ar-three-0.0.1.tgz","fileCount":3,"unpackedSize":711643,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhC9CPCRA9TVsSAnZWagAA2d4P/jN5kg1nYRbcHAqaPo7F\nCNfHTKjsww5Tm/524G+asOeOJ+MdXXUepIcDoX31KfYlKha0Wm/9o/PfrTPU\nwFmKC8KgefS4zc2uNRHTEnxFJ8Ghgr7g3KYJ9763AVWNB75S1sZTWPkq7jFD\nrh0UXhP/6dLaMt7rHWWXvhVF4T9tyJ0Ne2zjnO9NLWgQgMuwhEUGVyd1w4f2\nHVa8tRHGhnRlu6RZ9VF9h6r7RlJJei85dCkMOj8s5euV75ixY5MlV68kWjWt\nlT6q7Y7NQ1uj10lEjTxN2NlS/tnrbJixBkrEUCHrtXLVzcOFuH74GzRPeVmK\n5yFhCD5XppPAUG18x+qO4nr+QVQIG2S+5cgm7FAmOjcAtVbMlGSgEmBb+0fX\n8UVgJsxauQnjPEQnsb4KuJLaNr7eBjXzPbhVJu4+SF2N2A1+4eywzi8Lpe37\nQvfUKrWP/W5MahLmVGhMAUVARIZcv46WP4x2dpGEIJtF342MqRuS3Tr3XSFh\n6HACHS2mGxaBQHNfzyr+yofNdwOHUumNmPPMduCaPCqV12snaT2Mol8p4hlt\nCa6/Cp34FQ3IkFOf7RtuwI+rUyySnmzhyCXglzAVgI0c4ilK0Jg2nlhMpb7m\nVVfza16Go5AcSqUj8eZE0BcxDn1MyhhnRNenrKci3JLAVh+kz/jlHd1arQjt\nTUJi\r\n=Q2yq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFBWLOL2jEdCdr3GCMHk+q31JRE0cNbDcdY1zkbXDQWlAiBwtryooGsUKSsqPIREQTEJzDkb6hkOEIGlWk4ry523vQ=="}]},"_npmUser":{"name":"bd_jy","email":"yinjiayu@bytedance.com"},"directories":{},"maintainers":[{"name":"bd_jy","email":"yinjiayu@bytedance.com"},{"name":"bytednpm","email":"bnpm@bytedance.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/microapp-ar-three_0.0.1_1628164237944_0.7105855414643996"},"_hasShrinkwrap":false},"0.0.2":{"name":"@douyin-microapp/microapp-ar-three","version":"0.0.2","license":"MIT","type":"module","source":"src/index.ts","exports":"./dist/index.modern.js","main":"./dist/index.cjs","module":"./dist/index.module.js","unpkg":"./dist/index.umd.js","typings":"./dist/index.d.ts","scripts":{"bundle":"microbundle --tsconfig tsconfig.build.json","build":"yarn bundle","dev":"yarn bundle -- watch --no-compress --no-sourcema --format modern"},"dependencies":{"tslib":"2.3.0"},"peerDependencies":{"three":"*"},"devDependencies":{"@types/three":"^0.129.1"},"description":"降低外部开发者在字节小程序中使用 ThreeJS 对 AI/AR 模型进行渲染的难度。目前支持两种功能：","_id":"@douyin-microapp/microapp-ar-three@0.0.2","_nodeVersion":"15.6.0","_npmVersion":"7.19.1","dist":{"integrity":"sha512-fn/pTDNziRGvuaWZfotAXBOAEQTEHVABMNNYk2eASVcyn3WXND/nHMJwU13YBAldGzNQlzXz0e3tHSqXzGeqQA==","shasum":"7525e41c1a4e717f469488327bc28672f66b5774","tarball":"https://registry.npmjs.org/@douyin-microapp/microapp-ar-three/-/microapp-ar-three-0.0.2.tgz","fileCount":15,"unpackedSize":786401,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhC9M6CRA9TVsSAnZWagAA1n8P/36okP+7Rm8hNA9x5sTZ\nXgTgOgJGxg07n14Xo7ZZyTu9nwlgYu29Xi+fGz9w+Ls3d7Se6q0OLpCEtn7F\nYDCxiqhSqhING/5gHQq0nKgsj1kDNA+r/5H24aPbrWYtYaJnc15CbZjbQXZB\nD6yzKkVEY84R4mgi5M2T9o/BvrQ0T74ZPgfPCMcaDDbqbtKX+eMqGyMNDAsR\nQzqaTiwDMHrDWoTX1DbuOSVCJMXhuDWZBIvGrjvVYLRY7vwywTkKMBq48D+G\nIV6V17WZXbrK0udJJLFhuPCzPPVsuv/f25D8qS3nISC58+m3gSvW4/L7emZO\ndp/7sZgyhZHi06Z2dCEedYQ2S5JXhFVqvZT/phgzWoeHRNBCTILx0+S8T7ed\nbBT+ja57rqo4OB4j/37ReIhotMZ6nPLOk7rF9nd/+ALYdTE3v/OHANS4PReY\nvfpKWdK5T/cnvtYQpdwIK8n06OI2aXrayHl5pG3e0OjD90IrBBnl+6qLj8yi\nE2vA5umBwyZfsWSJVm9QxdXtmp0X6GAiLpL/k25+J6uTDRkAKR5/Xszuy43/\n2on268sw9CTU0W4E8O8RpiDVeoVxfXh5vlfM12o2gTYT437xfecjrdFN3JK+\nO3i48Xy72Ek5NMK2+tDwBH7rP/10I1IJRdlKZ8VjvNJtpBmDzSDs9KHuHtm/\negRp\r\n=B8c5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxh+x4EOrGxd3KCSf84VuyAsnY56S75gfj80NwO+HTJAIgf9S/RsSP32167nlTmwg8IkfyaE6NmMX+TrmvANoS7MY="}]},"_npmUser":{"name":"bd_jy","email":"yinjiayu@bytedance.com"},"directories":{},"maintainers":[{"name":"bd_jy","email":"yinjiayu@bytedance.com"},{"name":"bytednpm","email":"bnpm@bytedance.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/microapp-ar-three_0.0.2_1628164922787_0.13940759953496706"},"_hasShrinkwrap":false},"0.0.3":{"name":"@douyin-microapp/microapp-ar-three","version":"0.0.3","license":"MIT","type":"module","source":"src/index.ts","exports":"./dist/index.modern.js","main":"./dist/index.cjs","module":"./dist/index.module.js","unpkg":"./dist/index.umd.js","typings":"./dist/index.d.ts","scripts":{"bundle":"microbundle --tsconfig tsconfig.build.json","build":"yarn bundle","dev":"yarn bundle -- watch --no-compress --no-sourcema --format modern"},"dependencies":{"tslib":"2.3.0"},"peerDependencies":{"three":"*"},"devDependencies":{"@types/three":"^0.129.1"},"description":"降低外部开发者在字节小程序中使用 ThreeJS 对 AI/AR 模型进行渲染的难度。目前支持两种功能：","_id":"@douyin-microapp/microapp-ar-three@0.0.3","dist":{"shasum":"7f78f0aaaf694664f9349adea318a1fd9d1b0091","integrity":"sha512-oI9x9TJo2LlDLi3ZZLu+n3ywcMLU1Vblfps46vxX6hBCgU8p9pA6zFGQPIbV4/MN2aQqfoPWtbZ9ZfNdHkmvsA==","tarball":"https://registry.npmjs.org/@douyin-microapp/microapp-ar-three/-/microapp-ar-three-0.0.3.tgz","fileCount":22,"unpackedSize":881644,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhH1xFCRA9TVsSAnZWagAAp9MP/Ra9NO8QOAHZczd2Ka3K\ngwz7u5JGrXiWfcuMeF0qNnziHkOIV9788ZRy1zWXExOHauTJ76tTBCVkP2V8\nWUVPwlZhykPmD+syb+bVSuaXzD4VZZAMCbdaMsNC6PzSIccHjW9lZicE17eg\n2sNa3F6ZcDfRtu5lEH+R6CIYP1YBxz67QTjFEHAUbz32GVPn4kiPST5KK9jO\nLz9qkkdhaDuTJj6n9nOSH6NE5mNeO+lwqEL3aJI/dnYRWEmoUs2GLzy//MSB\nPBv+AM5dCwo+1AzDTo5X0UcDgjBCcJG3k5INYkhyuCawdSdwXdP5IJIAStC1\nK1RirOIFdJRc5HIGiYWdgkwhfpPwrwthUj/YnU2iRbC4MSWnlBJ4OUE1tm8J\nThNWOp5pfA/6tYfPhjzSbqOnf+DfR9O25wrKNUPxL3YkMlkbs7hzfsxLq70e\nnDv2fHruEXO4qRVPj9ZW6okunkJFeG9aKkg8TWoTANz5PoE3Vp4/TTwq7+MZ\neo7pIraKUaGGO0wmjM3+5/EWSTZ7sFgxJo0mxkq5ycjhopuQ+SNRrmLH1Zq/\nL29KgUzqBufa4I4bmO/zf/qCmpw+LtgriIRHhpJMwRRaIQbq5S4rznZ0v/sj\nh8tEsC92z1F9fbmERS++CeCDEcUlAQ8JKsrMe29ww/iz+W/qJGRSFO/ZTymB\nCJDF\r\n=MwF8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXRiflEzh7tGBagWvw+CivTNiZOSnCpr2Hs1YKCB6MCAIgHrfY04iQaOTudy8lEoZvQHgP9axHrenYy2Lv6JKvHyk="}]},"_npmUser":{"name":"bd_jy","email":"yinjiayu@bytedance.com"},"directories":{},"maintainers":[{"name":"bd_jy","email":"yinjiayu@bytedance.com"},{"name":"bytednpm","email":"bnpm@bytedance.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/microapp-ar-three_0.0.3_1629445189202_0.5108011910151433"},"_hasShrinkwrap":false},"0.0.4":{"name":"@douyin-microapp/microapp-ar-three","version":"0.0.4","license":"MIT","type":"module","source":"src/index.ts","exports":"./dist/index.modern.js","main":"./dist/index.cjs","module":"./dist/index.module.js","unpkg":"./dist/index.umd.js","typings":"./dist/index.d.ts","scripts":{"bundle":"microbundle --tsconfig tsconfig.build.json","build":"yarn bundle","dev":"yarn bundle -- watch --no-compress --no-sourcema --format modern"},"dependencies":{"tslib":"2.3.0"},"peerDependencies":{"three":"*"},"devDependencies":{"@types/three":"^0.129.1"},"description":"降低外部开发者在字节小程序中使用 ThreeJS 对 AI/AR 模型进行渲染的难度。目前支持两种功能：","_id":"@douyin-microapp/microapp-ar-three@0.0.4","dist":{"shasum":"d99bde50f1da7fa693b2f1dc25c5982f2e64b6ec","integrity":"sha512-QYHIbLY6mdoQLoMEQWQzbD34Fl7j/bEWDh0HcyOqA3syBL5t46paXXWDmZcYEEz87quu62ARdNnusPi3Phud/Q==","tarball":"https://registry.npmjs.org/@douyin-microapp/microapp-ar-three/-/microapp-ar-three-0.0.4.tgz","fileCount":22,"unpackedSize":882112,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPwaKCRA9TVsSAnZWagAA9gQP/3SpFIBtuASNDWoeGdHD\nWZp3EUAwbhyMpFBCYLksr/vOz4b7qHuUP+lDac7tpui3ZRPtoGAPHsF4PPgk\ntxCxNmnoSMFxMf0CUOOMFr4Nars9CBG0Xo9K9u3rffiguIOj47CMy6xatrvS\ntNgDLcRptj2TNllazlv+rziGh1gtNnGqZnkzQmJOVq9HhFg2FbY0vN5smZxh\nyRNf/5a00aLuxuLzGeTOd1Ier6YzkLZPrNjgy+KpUcGNWBbpSkis71knFg8k\nkCosQlK3qytEBq7wienel55D0BxxxsaeYn3HS5BlpWRyyv7R5NdInBFtCLos\nfi9WPcnlqz1fotl9S1eNTEL8kfulWNcONvK49FTiMJ5OLFTO7pCbrqZnQDHI\no1AJl/QyLCN58toRk8A6r2Rs5NUceWPHVxyTHcXhOOpt95feeQRou0MYOk7U\nTlMm3j7yxqwyZgsW8Isnm03KgytjLCmg6SgUej1zT4yQZn/y+WfNODxOK9Su\nmbKFdem0KQFKVOlvmTnAx2PnDkvoDr68Qk69C9pkRNjCVm85lpBQUZEDLzlw\nTQupPv0UWUL75K5IKQPROTsRShF9ygtwKsCAnYk4hQ0ffSI+muIDCH3JodUa\nv9v/cXzgDTA5RaF/I4sInaCTFkVx3cnrIlWfHv/63MH9oDOsty6c2OudZ9t9\nt3JI\r\n=UFfx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgsYoQ2rs8GOgnuJaLjZybcuBQIW6/7v+4nUtEkzQ+RAIgaawsEK4BbTHJQJ09qrHInRH1EB7E+w3yhDi5t8O2pb8="}]},"_npmUser":{"name":"bd_jy","email":"yinjiayu@bytedance.com"},"directories":{},"maintainers":[{"name":"bd_jy","email":"yinjiayu@bytedance.com"},{"name":"bytednpm","email":"bnpm@bytedance.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/microapp-ar-three_0.0.4_1631520394085_0.7848281450832755"},"_hasShrinkwrap":false},"0.0.5":{"name":"@douyin-microapp/microapp-ar-three","version":"0.0.5","license":"MIT","type":"module","source":"src/index.ts","exports":"./dist/index.modern.js","main":"./dist/index.cjs","module":"./dist/index.module.js","unpkg":"./dist/index.umd.js","typings":"./dist/index.d.ts","scripts":{"bundle":"microbundle --tsconfig tsconfig.build.json","build":"yarn bundle","dev":"yarn bundle -- watch --no-compress --no-sourcema --format modern"},"dependencies":{"tslib":"2.3.0"},"peerDependencies":{"three":"*"},"devDependencies":{"@types/three":"^0.129.1"},"description":"降低外部开发者在字节小程序中使用 ThreeJS 对 AI/AR 模型进行渲染的难度。目前支持两种功能：","_id":"@douyin-microapp/microapp-ar-three@0.0.5","dist":{"shasum":"06b4436849068796aec9713481329ec3fd8ac643","integrity":"sha512-gQcnQxV8BN8aJoTiG9bC53ONXJM2zr1rd0KCDp8iyYUUyafc+vk7jfVu5Qesm0Khz6Fch9ZMVvB5eD6p15zaNw==","tarball":"https://registry.npmjs.org/@douyin-microapp/microapp-ar-three/-/microapp-ar-three-0.0.5.tgz","fileCount":22,"unpackedSize":882205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2EdtCRA9TVsSAnZWagAAyXMP/i3kqzE3xZoVuFg7HHvd\nRxI6QHHUxgFDEmK0GOisJpCrGaw5jd2t4G78kMBjJBlH4MnVAYcb34illLOG\nu1MkIyHy5ujVJTEoMXZmtST0w3YTzp/LxaeN2LbVu6X9CqeWaIcP+hiUVfN6\n4vrgWqPIaF6FL22hOr0pCA//CpoTZPF6eYOCuvR7Wk2KN/TiYZPeUJtPTI35\nSKgiPjwKSA52QRLBSZXFocz96mon+omLZhoy443ybZgJX+YvjJII3nRQ8yHw\nvT4c0Zn0ZVBP++/6dd4B/3jwRGYUIRJlR0ZwKSI06JudbxC1Is6nXYlFCZWy\nK/vp29uF0+YtG6vZCCwf5lU6aMmrtNeyySMxhp+72QX/nYyXR25QRNJJIcjy\nB3kXGvFqkySUHQQ1ZMlAM2Am56p6tqTMKoIuiU7RLdpJWWbHnSW0IqYKvtvk\n5X900ue6bgg6uy0Fjs5IXbSVQRZnxosgKR+73HmuQKLfaBHVNWJbBBnpcDyQ\n51d+T8W+tcHmvLueKkS06AEDi9xScYrW9ooofFaiSHM7VbQiH/xxcQqdI4Kx\nAnBOiPEvQTZKQMKQr4ATJmQ+PiA7JxjKxJY0E+Dl9/WJMhbNdfY4dOMMjrxp\nt85y9qoUUdzh8wO7AMXQdqUxnx4XrV7saIe8RxxZ6B6oKydrMNLFzmr2GeUG\nVYI0\r\n=wCMC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB+tVKqbShkInJtSXfQLMDmUs4hF7cp8Xl5PKFKefF4kAiAoymPNuK905wVTVyXmyXb1ZUB9Ju+pFj9hv1C6w3Wk+A=="}]},"_npmUser":{"name":"bd_jy","email":"yinjiayu@bytedance.com"},"directories":{},"maintainers":[{"name":"bd_jy","email":"yinjiayu@bytedance.com"},{"name":"bytednpm","email":"bnpm@bytedance.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/microapp-ar-three_0.0.5_1634266583859_0.1792977338254096"},"_hasShrinkwrap":false}},"time":{"created":"2021-08-05T11:50:37.911Z","0.0.1":"2021-08-05T11:50:39.378Z","modified":"2023-03-28T06:55:46.598Z","0.0.2":"2021-08-05T12:02:02.988Z","0.0.3":"2021-08-20T07:39:49.788Z","0.0.4":"2021-09-13T08:06:34.321Z","0.0.5":"2021-10-15T02:56:24.073Z"},"maintainers":[{"email":"2889110370@qq.com","name":"princekinwdk"},{"email":"liujitao.owen@bytedance.com","name":"liujitao.owen"},{"email":"yinjiayu@bytedance.com","name":"bd_jy"},{"email":"bnpm@bytedance.com","name":"bytednpm"}],"description":"降低外部开发者在字节小程序中使用 ThreeJS 对 AI/AR 模型进行渲染的难度。目前支持两种功能：","license":"MIT","readme":"# microapp-ar-three\n\n降低外部开发者在字节小程序中使用 ThreeJS 对 AI/AR 模型进行渲染的难度。目前支持两种功能：\n\n1. 根据 AI/AR 算法数据对模型进行抠除（例如试鞋场景下从鞋子模型中抠掉脚腕部分）\n2. 根据 AI/AR 算法数据调整模型的 position、scale 和 rotation\n\n详细的使用方法介绍请参考字节跳动小程序开发文档 codelab 中的 microapp-ar-three 教程：https://microapp-codelabs.bytedance.com/\n\n## 目录\n\n- [使用方法](#使用方法)\n- [ArMixer](#armixer)\n  - [ArMixer](#armixer-1)\n  - [render](#render)\n- [ArFootProcessor](#arfootprocessor)\n  - [ArFootProcessor](#arfootprocessor-1)\n  - [updateModels](#updatemodels)\n- [ArNailProcessor](#arnailprocessor)\n  - [ArNailProcessor](#arnailprocessor-1)\n  - [updateModels](#updatemodels-1)\n- [ArNailUtils](#arnailutils)\n  - [getNailModelGroupByColor](#getnailmodelgroupbycolor)\n  - [getNailModelGroupByTexture](#getnailmodelgroupbytexture)\n\n## 使用方法\n\n1. 通过 npm 安装\n\n```\nnpm install @douyin-microapp/microapp-ar-three\n```\n\n2. 导入 ArMixer 和需要使用的 ArProcessor，以 ArFootProcessor 为例\n\n```js\nimport { ArMixer, ArFootProcessor } from '@douyin-microapp/microapp-ar-three'\n```\n\n3. @douyin-microapp/microapp-ar-three/libs 下的 three.js 是解决了兼容性的 THREE，可以直接在字节小程序中使用，通过调用 getThree() 传入 canvas 来调用：\n\n```js\nimport { getThree } from '@douyin-microapp/microapp-ar-three/libs/three.js'\nfunction init(canvas) {\n  const THREE = getThree(canvas)\n}\n```\n\n## ArMixer\n\n### ArMixer\n\n> ArMixer 构造函数，创建一个 ArMixer 对象。ArMixer 根据 arProcessors 的配置混合 cameraTexture、modelTexture 以及 maskTexture，并通过 mixedTexture 属性获取混合结果。\n\n#### 语法\n\n```js\nconst arMixer = new ArMixer(options)\n```\n\n#### 参数说明\n\n| 属性名             | 类型          | 默认值 | 必填 | 说明                                   |\n| ------------------ | ------------- | ------ | ---- | -------------------------------------- |\n| three              | type of THREE | -      | 是   | 当前使用的 THREE 本身                  |\n| processors         | ArProcessor[] | -      | 是   | arProcessor 数组                       |\n| cameraTexture      | THREE.Texture | -      | 是   | 保存了一帧相机画面数据的 THREE.Texture |\n| modelTexture       | THREE.Texture | -      | 是   | 绘制了所有模型的 THREE.Texture         |\n| mixedTextureWidth  | number        | -      | 是   | 指定保存混合结果的 mixedTexture 的宽度 |\n| mixedTextureHeight | number        | -      | 是   | 指定保存混合结果的 mixedTexture 的高度 |\n\n#### 代码示例\n\n```js\nconst arMixer = new ArMixer({\n      three: THREE,\n      processors: [arProcessor0,...,arProcessorN],\n      cameraTexture: cameraTexture,\n      modelTexture: objectTarget.texture,\n      mixedTextureWidth: width,\n      mixedTextureHeight: height\n    })\n```\n\n---\n\n### render\n\n> ArMixer 对象调用 render 进行一次混合，将结果渲染到 mixedTexture 上。\n\n#### 语法\n\n```js\narMixer.render(options)\n```\n\n#### 参数说明\n\n| 属性名   | 类型           | 默认值 | 必填 | 说明                    |\n| -------- | -------------- | ------ | ---- | ----------------------- |\n| renderer | THREE.Renderer | -      | 是   | 当前渲染使用的 renderer |\n\n#### 代码示例\n\n```js\nonFrame(renderer: THREE.WebGLRenderer, data: Image) {\n    this.leftMaskTexture.needsUpdate = true;\n    this.rightMaskTexture.needsUpdate = true;\n    (this.plane.material as any).uniformsNeedUpdate = true;\n    this.cameraTexture.needsUpdate = true;\n\n    renderer.setSize(this.width, this.height);\n    const savedTarget = renderer.getRenderTarget();\n    renderer.setRenderTarget(this.objectTarget);\n    renderer.render(this.objectScene, this.objectCamera);\n\n    renderer.setRenderTarget(null);\n\n    this.arMixer.render({\n      renderer: renderer\n    })\n\n    renderer.render(this.scene, this.camera);\n    renderer.setRenderTarget(savedTarget);\n}\n```\n\n---\n\n## ArFootProcessor\n\n### ArFootProcessor\n\n> ArFootProcessor 的构造函数，创建一个 ArFootProcessor 对象。ArFootProcessor 负责根据算法数据更新足部模型信息。ArFootProcessor 的使用示例可参考[字节跳动小程序 codelab](https://microapp-codelabs.bytedance.com/mini-app/microapp-ar-three/prepare)\n\n#### 语法\n\n```js\nconst arFootProcessor = new ArFootProcessor(options)\n```\n\n#### 参数说明\n\noptions 为 Object 类型，属性如下：\n\n| 属性名 | 类型          | 默认值 | 必填 | 说明                  |\n| ------ | ------------- | ------ | ---- | --------------------- |\n| three  | type of THREE | -      | 是   | 当前使用的 THREE 本身 |\n\n#### 代码示例\n\n```js\nconst arFootProcessor = new ArFootProcessor({\n  three: THREE,\n})\n```\n\nAR Foot 的 demo 可通过下面的链接来获取，运行前需要修改一下模型获取地址，模型的朝向以及尺寸可参考 [updateModels](#updatemodels) 以及 shoe_models 中的示例模型（本地测试的话可以使用 http-server）\n\n---\n\n### updateModels\n\n> ArFootPrcesoor 类对象函数，根据算法数据对模型进行位移、旋转和缩放操作。\n\n#### 语法\n\n```js\narFootProcessor.updateModels(options)\n```\n\n#### 参数说明\n\n| 属性名    | 类型                                                  | 默认值 | 必填 | 说明                           |\n| --------- | ----------------------------------------------------- | ------ | ---- | ------------------------------ |\n| algResult | FootAlgResult（Amazing 返回的算法数据）               | -      | 是   | Amazing 算法接口返回的算法数据 |\n| models    | Object : {left: THREE.Object3D right: THREE.Object3D} | -      | 是   | 双脚的模型                     |\n\n模型朝向请参照代码示例中的模型进行调整，bounding box 的尺寸如下（Xcode 下）：\n\nLeft Shoe\n\n| width | height | depth |\n| ----- | ------ | ----- |\n| 7.717 | 17.998 | 8.21  |\n\nRight Shoe\n\n| width | height | depth |\n| ----- | ------ | ----- |\n| 7.729 | 17.85  | 8.173 |\n\n#### 代码示例\n\n```js\nonAlgorithmResult(algRes) {\n    arFootProcessor.updateModels({\n        algResult: algRes,\n        models: {\n            left: leftShoeModel,\n            right: rightShoeModel\n        }\n    })\n}\n```\n\n---\n\n## ArNailProcessor\n\n### ArNailProcessor\n\n> ArNailProcessor 的构造函数，创建一个 ArNailProcessor 对象，它负责根据算法数据更新指甲模型信息。ArNailProcessor 的示例教程可以参考[字节跳动小程序 codelab](https://microapp-codelabs.bytedance.com/mini-app/ar-nail-processor/prepare)\n\n#### 语法\n\n```js\nconst arNailProcessor = new ArNailProcessor(options)\n```\n\n#### 参数说明\n\noptions 为 Object 类型，属性如下：\n\n| 属性名 | 类型          | 默认值 | 必填 | 说明                  |\n| ------ | ------------- | ------ | ---- | --------------------- |\n| three  | type of THREE | -      | 是   | 当前使用的 THREE 本身 |\n\n#### 代码示例\n\n```js\nconst arNailProcessor = new ArNailProcessor({ three: THREE })\n```\n\n---\n\n### updateModels\n\n> ArNailProcessor 类对象函数，根据算法数据改变指甲模型位置，使其跟随相机中的指甲位置。\n\n#### 语法\n\n```js\narNailProcessor.updateModels(options)\n```\n\n#### 参数说明\n\n| 属性名       | 类型                                        | 默认值 | 必填 | 说明                               |\n| ------------ | ------------------------------------------- | ------ | ---- | ---------------------------------- |\n| algResult    | NailAlgResult（Amazing 返回的指甲算法数据） | -      | 是   | Amazing 算法接口返回的指甲算法数据 |\n| models       | THREE.Group                                 | -      | 是   | 包含了五个指甲模型的 Group         |\n| cameraWidth  | number                                      | -      | 是   | 相机画面宽度                       |\n| cameraHeight | number                                      | -      | 是   | 相机画面高度                       |\n\n#### 代码示例\n\n```js\nfunction onAlgorithmResult(algorithmResult) {\n  arNailProcessor.updateModels({\n    algResult: algorithmResult,\n    models: nailModelGroup,\n    cameraWidth: canvas_width,\n    cameraHeight: canvas_height,\n  })\n}\n```\n\n---\n\n## ArNailUtils\n\n> 目前的指甲算法数据不支持 3 维模型的移动，因此目前只支持更换指甲模型的纹理，不支持更换指甲模型。ArNailUtils 提供了 getNailModelGroupByColor 和 getNailModelGroupByTexture 两种类方法来返回指甲模型。\n\n### getNailModelGroupByColor\n\n> getNailModelGroupByColor 接受一个颜色参数，可以是 string，number 或者 THREE.Color 类型，返回一个带有默认高光贴图的模型，类型为 THREE.Group，包含五个指甲的模型。\n\n#### 语法\n\n```js\nlet nailModelGroup = ArNailUtils.getNailModelGroupByColor(options)\n```\n\n#### 参数说明\n\noptions 为 Object 类型，属性如下：\n\n| 属性名   | 类型                            | 默认值 | 必填 | 说明                       |\n| -------- | ------------------------------- | ------ | ---- | -------------------------- |\n| THREE    | type of THREE                   | -      | 是   | 当前使用的 THREE 本身      |\n| renderer | THREE.Renderer                  | -      | 是   | 当前渲染使用的 renderer    |\n| color    | THREE.Color \\| string \\| number | -      | 是   | 当前指甲高光贴图的背景颜色 |\n\n#### 代码示例\n\n```js\nlet nailModelGroup = ArNailUtils.getNailModelGroupByColor({\n  THREE,\n  renderer,\n  color: 0x00ff00,\n})\n\nnailModelGroup = ArNailUtils.getNailModelGroupByColor({\n  THREE,\n  renderer,\n  color: 'green',\n})\n\nnailModelGroup = ArNailUtils.getNailModelGroupByColor({\n  THREE,\n  renderer,\n  color: new THREE.Color('red'),\n})\n```\n\n---\n\n### getNailModelGroupByTexture\n\n> getNailModelGroupByTexture 接受一个 THREE.Texture 类型的纹理对象，返回一个带有默认高光贴图的模型，类型为 THREE.Group，包含五个指甲的模型。\n\n#### 语法\n\n```js\nconst nailModelGroup = ArNailUtils.getNailModelGroupByTexture(options)\n```\n\n#### 参数说明\n\noptions 为 Object 类型，属性如下：\n\n| 属性名  | 类型          | 默认值 | 必填 | 说明                  |\n| ------- | ------------- | ------ | ---- | --------------------- |\n| THREE   | type of THREE | -      | 是   | 当前使用的 THREE 本身 |\n| texture | THREE.Texture | -      | 是   | 当前指甲的高光贴图    |\n\n#### 代码示例\n\n```js\nconst nailModelGroup = ArNailUtils.getNailModelGroupByTexture({\n  THREE,\n  texture: highLightTexture,\n})\n```\n\n#### Tip:\n\n关于指甲纹理，getNailModelGroupByTexture 接口在生成模型时，为算法返回的 8 个坐标点都分配了对应的纹理坐标作为锚点。\n实际上，能够显示出来的纹理要比由这 8 个点构成的多边形要小，为了使指甲边缘平滑，接口实现中的做法是计算上图这 8 个点构成的多边形的形心，并且将 8 个点沿着形心到这 8 个点的方向上移动，移动距离是形心到各点距离的 0.2 倍。详细用法可见 codelab。\n\n---\n","readmeFilename":"README.md"}