From 09359a16470b2c69b456b9189583f1ad1eed4573 Mon Sep 17 00:00:00 2001 From: zguiy <1415466602@qq.com> Date: Fri, 24 Apr 2026 11:20:27 +0800 Subject: [PATCH] 1 --- assets/百叶1.glb | Bin 0 -> 63272 bytes assets/百叶2.glb | Bin 0 -> 63272 bytes assets/百叶3.glb | Bin 0 -> 63272 bytes assets/百叶4.glb | Bin 0 -> 63272 bytes examples/btn_热点.png | Bin 0 -> 4194 bytes examples/global-demo.html | 23 ++ examples/module-demo.html | 211 +++++++++++---- index.html | 421 +++++++++++++++++++++++------ index.js | 108 ++++++++ mock-arkit-server.js | 113 -------- src/babylonjs/AppHotspot.ts | 6 +- src/babylonjs/AppModel.ts | 48 ++++ src/event/bridge.ts | 6 +- src/hotspot/HotSpot.ts | 15 +- src/kernel/Adapter.ts | 18 +- test.zip | Bin 0 -> 7995 bytes test/customization-3d-copy.js | 173 ++++++++++++ test/customization-3d-viewer.js | 455 ++++++++++++++++++++++++++++++++ test/demo.html | 224 ++++++++++++++++ 设计 | 3 + 20 files changed, 1565 insertions(+), 259 deletions(-) create mode 100644 assets/百叶1.glb create mode 100644 assets/百叶2.glb create mode 100644 assets/百叶3.glb create mode 100644 assets/百叶4.glb create mode 100644 examples/btn_热点.png create mode 100644 index.js delete mode 100644 mock-arkit-server.js create mode 100644 test.zip create mode 100644 test/customization-3d-copy.js create mode 100644 test/customization-3d-viewer.js create mode 100644 test/demo.html create mode 100644 设计 diff --git a/assets/百叶1.glb b/assets/百叶1.glb new file mode 100644 index 0000000000000000000000000000000000000000..da9daf3cede1449d3d3209b8dad0739128fe3342 GIT binary patch literal 63272 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

7oL}EjQboa>EP`|IS!zOqU4b}%p-+(W-F?TQi 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 literal 0 HcmV?d00001 diff --git a/assets/百叶2.glb b/assets/百叶2.glb new file mode 100644 index 0000000000000000000000000000000000000000..dc62dd4720ce8e379d62ee546744148a8ad9a9f7 GIT binary patch literal 63272 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 E5A=8IZ~y=R literal 0 HcmV?d00001 diff --git a/assets/百叶3.glb b/assets/百叶3.glb new file mode 100644 index 0000000000000000000000000000000000000000..9d58ad872ee112504b48c2f6def71eee8339a7fa GIT binary patch literal 63272 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 H?BxFerIzb- literal 0 HcmV?d00001 diff --git a/assets/百叶4.glb b/assets/百叶4.glb new file mode 100644 index 0000000000000000000000000000000000000000..1a9b6b486a508baf1a8ae9cc493587346fc40c39 GIT binary patch literal 63272 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�se{zM0|zu!w9FbjwvvR z)PnDdk+kJ)E`&=ZuW�B%s`e*PV15R+S`_&(sqnw9ZNm0?t-SKV-9URzk{|XeBXO-q9A{!l08}YNYeV4 z^!8ix=Y~;7_KEN@`<1h@MgnV>yzRx)!u-`fjBc|Glu zN{gy(J)q@K!5gCmTxR|*4Gi@IlR3mDuz&kT&59~vh4`Pu3^kmMtPPyP>Le)>K{jGF_tO(H0DYr}S zC`ZzFuwi9v#eDHx@s)bv%E73bYML@t)X|-7kfa+_YfcX%x|~>A;Z=%&CV4&dHL<(f zeKFG9mmBg|4K7u$Deh{6cq?6TXX{5wMSOI99^Xp#&uVoRvCOV&o2Cp`ynJVNhtC87 zeIFeQ^5mnV^RdX?tk}t%h)A^LSrK0B8N;gzzpsB|rpDRVz4PW?OfNN-s_J7=J1#1W z*-M=UJ@4XqV&$J4p!y6SfBQF{h}Q%sdwpDf|euL zCuHuP!ca}`_989XxjUF$*H5A)?>Sz3v&%5+G{1S@X(Nm0z0Gtv`bTkml1*o0P+ak*lC!2Oj2ICALMe3LgXM*omg$2vZb zUS;E&d`n3PrBGnI9VXK8-eLw%i$lK3F~{eFX;=YN?#VIxmbYVS5J9w+U!u+o-KFEI z!}(3qLtT7O(z}S#3Gwa*ErV>W$XdKj3r5u3H@7{7Xn*zm>oJXQWs#1^@Hbe&t$-eo zU|`)$u|ZK3e{KcT+9S@ffi6Y0PgoA8sca=Q=adOY1FT zmp}ACJomF^gwU>-oyj)5QDq%gasfwxB4B{=-%5jV|11su7H%B$QxnPaN!EJ(17?BQ zT#=&=p^z6Bn2MV=Mf!^j@E&q$^%!UWtG&!35nkb!`tDB%7Yt!S_0_Yw1EP`xU}Est zM&S!9O=R{Ni~dQe(183+9j-((9asI0kXksNp$55t(^t2$ucBE<`*SszFS|G;Zvg8I7|Ni z{wJXqCKBtjH{V{lvxXh#I-f4GmC<0x)3|RZ%l{Mx6;$RHCCTsJ5`B=xWcyPV@Z5_1 zH1cJR8oG1g!xEeB&tiZ&HQAkW+lC3|!mItLv>tfWp5xtZKJ%rV7f@qvGBr?z@; zfvxP3NB-k$t2>tv1Cex!=dh%)`~?cXKRN_xEsJXtH3hvJH#g$DvQYzf2#7#?TQ9kn z@98DwFBGtSx+(J$aV?-#Y1q_W6`cxceyXdXP^P?JwxVz-1G+x-$ zx8m9!3^a!}m5m=!jFt_Vcm471tUcYLxD^1BTQ})z_zu zXqk$@y|V!hz>866Ojw3SOO1TD%w^YW+et8xw zJfO+i(E~{WkJifh7>+dZapyV54}J!pWpe_u^uAf_K*w|Ya$iZty3ytv+&u~V1^WBR z?k}4rV&SCr#RZRMY+p7E+e>Gzh6^%kbJA>h#GOT{&2waJ0m!V{o}1oW|2Gjr4PQc^>1~-LHBW!h8@qOLo~+x zlrM)Oi$h%|>ctV@Mkn(n(K~pQl?z2CcCYf!9b1v<1|ptCsmZbsxSrD(K?x_0iIc}T zbuuD!Jx|Al9e$r$%wYXR4)e(#BR4BRhNoJ|h;?S`$yviN1yFXNfQ!#4>^-uH-v-24x}g_a zDD?O|nNn(7^GL{XP<-9ma?pg101A z*$y#nQ=CFCtZuPG+RWtYbOpJD#j!PK{U68!o0k3laU{TPJI0gNwr^%u9w_w^k$~Q7 zf&SA41lwnE=j$wRN1#LO$mt5T(+SEmh8O}A8j$&y!9$Y;cEhLcxngRlm>_-QRMA{w zziYd9?voDY1Qsa{I!~B-oS4!m&gvb8^Rs9=fH)lE{Q3vwN!RlgJ4cV~8@`_cA#jI) zESIJ%_7zW&qTXNqz-FNGM_BGu5c?19iUejmaeEiKx@SY+58`>AFJgDvbN%UG6tz}{^%v1Mz) zoECw+55Ydg$5tFfKpkc{-ER!RWh||pM`&n@a5+!A+irSvh^iXxAC680{LUt++|jJB zUk;HetQ76wukW?ke5uK7=#>&h>8(JRt=}6nLYPULmo?e#q|(k+{6XgKJ7$;(8}(MOU z?`bHaUNnE%Z^Wz*WP1!}oF>^teeYaU0G!&{m6B_xmb~NfM8WROlF)i`LBBiCcRu*+ z&Kj}fhZP~+xDse(9%X@8Bw$O|?)%j{u;4staoEp2M;ojV6#JZb55(*Fe2=NGnr0VyBX|8j zM2s9^s-zaJJx~sUCx1j^b5gU!)A{eRV1rVQrLrR0Z<23{Gr)vEE&j=9Bs@d|+-1(5 z06)-K!QlL}BfZdFIMB8(6^mI;04fI~Uc?$VAR5wT*`ZLf$9}q2M)Txh_+RP`;It0Y zbd%O~;ciuul*G3DeBDboFh3)P7!f6!g39(Y5%|Efbf5f_2xz$J*h18jjgwpeD)>gj zWQjVryD(n~Uog)nAU_MW<*9DoGG?9ep@Yi;okC|uwaO8za@utlXJdSTMGO}3d9RQ! zC}Plg9^6m18Sm`bUtie0`I2T6%Ll_p4D2$N^uVY`(3EKO9ImZB8 zUEAn_ri5#b>XS>1T;Cx7cRMh>eNdW`(~Ch1JJt85;ZWSCSt=qucfWuDbZa#d74h6= z-OEI@uEn*g`BTM2C%dqH`tdq0!3uLDSQIfVzjUo4^|)<7W(O+$8ijMrL-9LL?=KPe zuad^FX;dlpf1e(inAVTfiEqF}fWrW!iyM=7zv#fnrwlm<#H8;$>&;fdZNS(jA_s~mg35k)=U*SsEd*SN)FpZ_ ze?9}V|GQ7q+`ho6x@c7w9lPT}e&B`L{8J}T^=ZN`zuk{l-(26sgD!!%*v;nZQC;JT zXw^?+WmkRvi34F{{^I7dyWJHkn-kb#h6X~7S+UR_#0k~+?EbRp`Y*cpbR?0XN+m{P zYZk#!pu$Yc3Vms|rqOZP-5zJ`R@U06wfv+**Nus3S-NPV5L?8&YYf6}1Wsqg>#L9o zgjRhD^f#(?R6Y(7AgM*P@hl_TKXn9aq4YqNi}-F{@^)Bl4g>CFhF=4(A`yQj4(Qe=Kh@7L!ZoLElHhIP&}Pvgt6#go1X zhfb_twQK!W10B4h4)8*Z@a2>@V97(h!?~&WI2Z~M-2GBcu}DPzbDsZ0IWOsB?5?w6 z3(9D`p8_#T|E^vlW#hso&QC;;BYi;bH#V@|pPGZnT;hgbAL|241KM?P0=9ql1v4P$ zyCeT%TmcoL92J$Q1SG$3GdAdKU8zxHmd%6!v!nN8eGYTcLq*2Ht0FEC~fs}P| zNW8b*(%IuA)`WrkI?h!C!}W**djLWXvT}}EE%7ybx2Ye8T_K8$r0Ewp%3-oK zQL|w50crcMOr-*kgm;n)cg$~joVg}E#Ri}x5$~dMZ(LEv(r=&l+7KiostAfM)^V)4 z=W>gz+Lb6;t+B)8wAxiKvOZ-2um_jRBTB9uZ=P5roI~!l$tlUv{ z(ne@)O3h>61ZlsAeh0%wLAU%0chP)6NQxTILle^`Tj+t`7hV)5@d_XFoi zBB^r{{b(kHbNJF75(^j1gqqEQeV?pF-dy%q$iRE`cS3*{kPrlf;{sJjeZE##n|*C( z1jV`tDg-nnBpe71gVhxpV1o?JjRqhB!U2(iL>xdaAQlxC4LUSp^@>BLCAan4S*E*iZT{} zXaEAFCK^Bv84DSF!J2viKotNG0vI4CBNHJfgSSQ&gNMgMrbh_>bC*?*0LId%@m$^ZPW&t1}e^3R$YgThz zmdR4@##%baR%9f%yiDdTRoYY~iw&(pc20_(E{3(+d}5mJPYtulzX{5QOE9JsA@Q_{ zT=+UXJUH0GeR(A5_3KqUf+o3$69dPzJ%d)G_C{?=<3nF|vhrQwzTTIVjGX0%t52K75wuZZxrcn6uug`qB$N$ zE8(O6Jl6S+-yhT1x9zu}m>3y7o0>cu8<{+tGLGYDc~3db3iyZ0P$dh)ie$Y0Qa=@Z zd2N(c?MWx_*-nU4;P5lDq!1>AGKt+wU{(Xws-@tuVF2D!zp*9Oir+8Pj6& zLtc2uu?$MldhdG~;?Hk{t)h?rQAqGdk-?37c~jEOgQ6*pJtUJ%w6Ts$f)f`^)X0t2 zb5O(#ZGjUtbH|cIr(6dVNg%6!xW-BssczHbIn#L~3jE;ZIu7*O>eFZb;Z+1^3=CC> z5?pRE>Q906AHEjhG#p&cX(!f?xS7?#YpS}TRN9cOVL?GIE>G+y1a5RXa}^m>v?G|W zZ)Yr(``Mp6n0b2aXbsGbcmTfA7nK}~eIH2~KtAyLZkek2HEV-;;!mE9sfXnhKesO>ws6~Po-0z~2fS)4H~E7{m!=0_E+ zv@7QKWc-!L_UYL%gk&XQ)+ZfO^<1-L?r}lXP3X(Xo+6Z7uq}IUZxQKyJ8uO`+ z;R9Xmwx%!)Nx<8%fM)sHO$<;E-$EIESO*zTS5dL*w}~M%tmOWc8mH-Y%;y4zJKd(c ztnY1V8E%nQtw(Wvlbw6X^|CKHQEqF_q{Vn(;uD4k7lN_p%6$ShkTFodQxs(wb~$6k zEMeIzkxUx7dAMo2%*Vn4h5{TfhH1b(?R;LzZi!EryS~cZQRns2YF1DL7-4zewkY1l zHA*vD2*}8M?jsM)65TD`ePm=`U`;m37Drt&DP0Z3CL;veDD$Z9T z+>6F3GdLo3>74dK$lfEzU2z&}j?(mQr+R;&_@-{*d%_3FY0rawtpn-P2+n+Cj%n0S z7jHbal_6I5(=?yhlhnldim}w3mT4>DaXD`|{OmP)*i-;DaEP7G$BeXSIlTmB{fKzh z_UqgDKjv-eLC4)WbLVI~BR(5r^ad3j5=gES3Tp`0vX889tj#(3a)sRkKW7y z+J8PZ1P?TAAJ93gXw~yk;M&ebHnVi}-(%z67NaN2tdHgooqlFduq-|-02F3*8ul$K@J;Nj6>zpwq^f;t{bsAe>7s%|#rBwkUI zM?Yj($Vq(JwDaHE8|D&wIM~PYNEdTwhO|e>cLQ zey2*(*NszYajIU69gZU-WZz-o#CH#~^yt(P2{_($xgNm0Uc|)*o8yHu_!&6Xwt|u< z#I313VM@9ls-2>G^ql13x}wwcs)G{?D%-~tGp4m?l;Ax^&@R#6niXShZs6Q84IJ@| zDLYWwzG*NRsxN zf~KagVW?%@Yiws`pYFP(Wj?##%6y}uVoY|7hBJF$UVBX$SL^WH8A~OG_w@??;v*jW z5TEFfu{N&X#wS+#e`1bnAr-guk3an2G|iqnvs`?IH|5Sx5JEll_1tRPey7T6hOkx# zhLuqdMcn(UZuxlb{M#GW>h6tv3QOiUxD{d3pK<|J()nOt8ga*jZ*4a=eOCSrv_3b` zwt+HD`YvzlBYJ5Oxm%86e(T30Mw;>AbyBm|%8kS%C`|i??jhuS6|-J{%=|T4IrCy^ zF4-+sKmNi^@=K$7NyClvRt27!Xr+B$UEEI>dAqDr*c9ao7kV#-c~+22D4FNKFo_Jt zAAFmheg=in4b?dI%wazb6V#yl+tRLQR=IsKmdL4Yoa`jAO0Ac32~|9NXo-ca9Y?Xd z>0)+og3rsPUhL_mWd{2yX?@fmg6K7EftZcvb z!=ig(fIY?_6CMtx@FvT)s4$>#Oei&@-Xd;X5!p&U&4V<;=v|)oDV%9`Pa)VVLepSS zozDdGXIk@8CDJ_}Hof{^G&}#)DB~T+Dulkvv479oDDg+2r^$3Dt0o;Ng;Xn7Rz~jO(?O+B$>e@Y4oix-gXDlY-pz*zEjj+$1WxB=HOdfxV`2+ zWyB|>D#U-hq|avP*kt?eEW@WQxeS5ZzjARt143$c80f`$KdEnAsn+_;_LgIh-FJ_z zxswQNDr4$tv*hd|kkLhzZZbD7uPV;i42rZ6g4TbXGuTnW#K9F8`rZ%}*|p0IHpphP{IxivyEBrIVBVal7jR+apy zwHD`|Yaal7>ezOn!GE4nHc8L9b`y=lstzP-A~&b;qVsqR8k9#Xa`?RE{MsjqiMzvf zsOf*-Yt0!v`e=(segQ_r&Us;*bim^2SvvK>+;A^2Up>urd#{A(lilPJOKrQN9df2V zHvD6szG_$Sr&Qs8*QejtGR8a|knwk-#V%GMWa%w1dU}A?Ly_jQp$*}jD<~Ci1rK!A zu>r=#5574HF5|)6SehJg>Osu~winSbQ{J8Tk@R%3;J!;QY@EVYt98&#R(TkYUs}=~ zAL1cPES;V}MExrf&mcIGzaD^aae3o%f3WrPGKSUj{%elwQUA#h*e?HjNkk1z5&Q_^ z|5rn0ESZ?|2*zs^IBbIYejIGve0)oX_POi5Uoi*3hdW!r?Mqy?&-i>xT;Xy`HR(%J zvBbetJ|53XhWGnEB=`X?k7ZvH1`mggq7KgwJOdQYgTI+EeSHVrk;kF+-{e>SO99U> z!}D(jJleXzJBW>DG7sd>IRkUha}2kDCZV0e=0w|w&6Z@Y>J zM`5Ao2UL_f(d`DpOjW?~)ww?waxZf;;2=JH)|JXtijnM+(u zeemv^f8^3X(~!JvOh`;WAd3-N{LIRdwPe?ONhwb>_eBQiHn4xv}+%I z!6^gDbuUa)D$H#nd`!dt7B0+eRxlm$ndw5_j$`a90fqAk+wQ4i&>q(`+40^dq;a|s7l06CR}jA86!QkxlnasFqPH`pQtZE>|vqyMP*CC2{u z#V@|Y;F-pQ3wb`dKWC}`wSb|UhOHmSLRo#x+28Z;e?q9uw84jQYp&5=AZrztdnTY!V>o{i8^Ld+eg)M3= z;m_&Dql*09W5vs|m0)f) zIY<?a^eS?*3Fzl;tj!Mt-GgvyO z>Q7#4go-@7kGHo=^5GyT!FZMuLcFT~Kr->qEf0ae-%(++kyR)1AB75i21a$RosY)j z`#Q_Gnv2GrXL|xx>a;Zd&CH|?t>38GhVfA612OcZa|t4acd)m1~N z!eL?K7polmv1Poy-7C?l=VSXRaO38HeXj~f|7|?tw@m8`x-2c!0EGMqG@g}W?;j;P zF{BY5>_c6(DLsqeGxnvQkU(Szf9YnM94wm$;$KVdUtfSr?pzO?oh3=jYtl}}55X50 zFUD^r`^>4&?EXonh5etISi((lL@IxLJb*t1%nzYrP*aVjM*hYo&%Yr$M#n;D#OKPP z0;u!YGSCbav2#3M#f<4oq1$4Luy6y{eOXOCX$8~;s{M-@ZV@28N(>~33Qyox z^6Lq^vHwCe47kHPN|KyEOo*-y2 zGzkd-fd~m+5CX|0cw^zo5tacG00bx=s1ZmnD01jpNGHfaNY6JwO@J^E@J3je9{})0 z=7tXB;AY_m!c&nsS|*4)(u6?U0)PN2bZ%(y9{?Qq27sdi{`~s}5CVo1X}D=TZ2xRJm|D)w_|XaF;K5c;26f^k<;07wZuJRHyfyaOZv9#9M)yjN)O4nV2^5Ejq{ zZ~*WC3ITwP;GKB@*a0A*1~(GG1`v-=3El|^4SWRs;6VTYY5*4i1parV07_Gjw(m56 zL%>xq7z>XK0E4NN;2SBB54Z!o0gna^-c%JpjSnyZ^Z-GiZ~({!UJP9oI13C01Fm53 z7l;K!!Uo?Ff%k?42mrqc1kwP2elFlK!OH^>1OQ!tA4dOLT?J4BL8|~T1`J5pw=FWd zROQ9sF#vW4RSKofN;bt~+6ff-BAU8R>E72$c?u~-eW>%&R^?hh~Jjho@yFV^&1}(voZGCK7@ zM#8}QBz@-C+gPjt_0vtbi3+$<`r~_+l|K8k4`mSOf`*-%=>4!MB7>pEfNFl8)9 z_q1>-gt1J8xVUd8;1Gxs9Gwfdk+wv&<*eUB#^TRwEJ;L{QD-NmQlmUJyP9lfA` zJ@&~wc^Y38Rdes<`wTifY-%$tXmP(jk){9qW1f{=y1=zfojxgAI54BQupX$uK5fvOh3HclN(0-!==$_y(=iO(l zVsb(2C9dcskc2iSTbm=oy6nfYToD-cVCHzH8l@L1Cg|R?6FtOupGA|eeX0r@Yf9ga z^51GsouDVJ64ev8i_@dik!`OEB##YrC>xyd&z9~qDW2!Ayi>O`T z$A?1iL0R)}+lzdkGjO|U1$;C5tX~&%u3Z%BuM%HIkfLFxZX;$K_nNG8zU@efL+mUf zMnkVI@lAO7paBt|w;&lZD;ivuOHV_d5K_;JH08lU7W(0_EQcdpYCldn@9LZRG>f77 zqWU}DE2v}a>Ce}DS*Ik9N7k$!Y-KP#?}c4I5>IdOsW-!?FIKFW$)z^;gr}wJsH(DD z&}AH&D?ZE`kyXhhE%bd4;rKy>`_;!&l~yjb*GRjDFX1au=pXal8A~jL)D4>IDqR#ZgAS-V^PsfnseJ#|Q zPWMV*W#vy7n!vQA^g?<7V6c$uPFd+O@Wd7QFFKtBh*_)p#;=7`Hn0=aJeBC_wI2mS z%M|so1>omu=erNFw&;+R6t?Qner%0bL*C$ z8I;uQm}rys2)>Zs%{t6RU2x-oxYS+U8D7FZVF&vwdCW*bJgUhWclrde_g5{H-{N49 zE34dmXawRfb$pqEb8san8iNVhwS^~$lPW4skWF8%b4m-m^v7$oX@lC5&S>+lMyj$* z10r-@;NMC&Vjj8$iOj59HyYr9~Ts)T8eMbY3)OGNZY+pXkfW>l!UJmhq8 zJ1n=XbHAoIS zohRdA2(PqgT6Oxxz24SE+YD+jGpHm6t)ba(CK8fgQe@}GH2}ipRo2k;k@m>YcC-uO zu$-0DKg$#cI5BH0UYI~7z`$oub&KvsRxE|oy+1g6TWXF(7 zHXQl#lS9#K-hO6hEE(4^QVX0GcOK0|Qb)zgA0^c8?TADyCm0t1EKwz>FXmrq)ydOP zZwyT27ksVm8n^0#I{%F4dw7?YPqO~#L_`6I9y(J5m#R(H}Vg}jDuR3L??D;UVA zMq~Kskrt5WzM4r+?`6DF*vRv#Ti~!xQwbsC0XNa_eA>2&Q=`tfxEN&2V$FJGlbRst z)Jm9B+}cF8P&$LG@`wU~Tcp&uY%F>5h0A|autzwK4i!cZ$*I88ALWydL#(EQ5su$# zy2cONAkrknyS_)WoDiEw*RXyh=w(u(E7>4CIh1iP8V2(0gL^`Z6*j`~(Lx>CHfL1n zml@Xc$PnorM)GhPqK{K0B8l~6N2=eR0?;+RwpeXD>xa&)V*TD4eyRxVXXnRn2gEj8 zQ`c8`W7RD_N^;BUktx0Ukg!tmqoDcoG$^-@&$6HAttwdBgw8@v<;}#`bF@i+a~(W5 zy<->j5R9vEE`W;qjOkktVw-92XtwdrT^16nlgOK&a(wj;{RLH4&6nxo&l`|i^wl}? zQb|9gVZ(>AH$0yDoO154XkDy4lxGae>mamJx!ZchuSh*NC&Si7p|xl;b<`O8$)jEz zzuG1x9?@-_@PFjuT0*l0rLEo9Q&8;Gw>~l7HujaI9X(3DyB`;h78qJS(3P{O@~^RLcI>FeMc=%4?O1=e(GYf%_}!_m z^Wz*7h#T5tA(b*s5Ig9+%rc^D(MLPES8Cjvh%~@|Wj#ximthD*Kpz0CESn%`IlpTV z?&2K#he}02>nydlAaMA#)9WWO zX=2^o50O$u%QE-aX4`7-u#INXEw84OA>Z#KDHBlJ4OGAd#k&x8n#tRWNPaFxJ_B) zQ0w@0o;=2k1`>OK@SQpr=Ljs0USl8SPo|etKoDniO6;lO#1LYe6^t! zQb)S#k&t0xPxBB^l@U$l8{@RyZf@TNTniNLtEFuTziD_>NlCa~WkCn;&!qXXiaGBY zmcn-Ab_a6nh~neO^v80rw|_dn0Ob`>KKYP2nM%&3tiT=p;=uOh>;3~#dLz=C!UvhA zUQ8<~JKEYwPO>7gg8ddro{zGcq@qgrbwgOH#w|e49(m~0=s_BlA4Jlc=!V3s1*G5? zztgS&xEp_9cWUN&TztSGs$o2=IVOS{Km*TAIe0aEr5ipR)vM6N!fGx4{jg&TUd)ii zOAg_+JKAjOaBLX)p(x1oy-H;BrJwi=q3~D%s$MUg{}u}TeTpk{Fsh}gyM2C$l{@06 znk@QCfA@&}kuGS?^&@@~AbJUyyznU~VP*K4kW^J2X-ZbTHEkj6t$@he z-BznA)-)S=E&jaJ1lq9`@LuI2#lZ>BiZj-5yul268<+6rdA9e7st6Yq`vzo$?dXl{ zH^=6E7SxAnr=+s*HA^!pk1u2ACp6OXw=C4jcjuC|L+jg}^M~vHp6>uzeoPy#v%H!N zq9eu8Xe-lVQTWsrjeN~6|IEv)eNfoaS}OV+>++!vFKgM1&J}wU=D?UY*|Iij5fYL` z?W|K-3+7iY)Dd5lrSML=Z5hGm(wZ@bjmk-<=O0*vdLCL z9>2AT$#?nm$dcl~K0)&JgYt#}m9h*+CDDXm?W(7g+ZMnLV{KwiG3WV_8OQtU(&U z+RF!IlB?Vy%D{H7bxe#N-zs#&mqBiWHj>ZH0%OC79X-Z_?ilqQIhzNetc&#Nlvx zW81=;C`41Z9iw)(XT-bIe-STY+HZ8z2uz?d?nowEdklwy_HPkoenQG8t=qsDX^K_R zLo*_seS)GwZ!z3KHI=6+i5&8qOPJ*#^R$-_v541pTMBwp(g0sj0WUz=`SpV zu4+0HmN%Rm#i$1B1Pc@u>Gd64a?YZy;(aq^zjwU*{x6jLiMYs5DETM&6NM>qBf11g zWqoHdV`#47NR@yAS#gO`rGcex!3)7MIk{L=kmu~l3$C6?9JoV`BT)UV`NgXWQUYdi z#b=LwlC8o@gpDNG+wofHH(n3w(3pN{4YezfosDdaJ8u`9Qt1{Nsb6#y9=HLc|1&+w z$P(Ij_gS(N1somYEj>J*r`e9)Ukm7;x3S$)G-1@NkK6Yd8 z;&P!zrI=q%&xtQ2Qu@@ zty9-czK~c4jFO~qZB6;Mo)bZDkuV~ZMy^XiL|7?b{@JmRIWmfy+Vw1c;Y3u-QtiQ} zdp#%$7kqZ&M1|SmKdrNClw;3*_Cb&L3mM;=XoIJpfbTTE%Q(vqPN$S_%T+TyIDFS& zqNkhkQA%d)V5L}Pn0I-V7mmuDy&zra#1CMVUy z^+gYKw%cpP&q^Y6YLtzNjiL0_TC(fJdpt_-Xll#@TNjbL9c%lDi~7N986RV z&C&eyRNF9bw78l9P=CN}eEwkrH>3<6gv7|0uD`!}sV^xt68A%C&3qa{h3M?lvn-<* z&~1jBrhCmjM&2M96jOvu)tnfW!BTdEhykj6edK&bmr{HPe=d_h(PPI9Y!;+=)5i<)@UNN=WV8?{7w< zqOiVt6Di##2;VjTB$prKk)Ykz@sytY6q3;BHWYdXzq2f@m0SeBZ|XUm{_m)en^9)p zTdybQ{SkeXUZPgoT1YdA2_?>7QJ=1s3~rkBRift6AYKqW{>B9{ zm@<4c`_XXJ#O@_NE07*GHgW9DN2mYCB|S)XU)UL$%P_95r^9qvziD;N=}a{d+W2{F zzmhZ0b5ro(w7IR)OVo-lQoNe$FjW|Sv?RnErADX;Nd;}247zt_lLV0{9-Z)_35D;> zl2*$M?clir>#IgK^xh|yGLXwnRgc>gZd}Wz;Px1>+djV@W-~0=jhMbb=)r!ZqqTuz z*7$BTgXpPaZhuw@cy@KVf$@fEW}~(7C?wpA~4CLf*ulfaI367CITTME&GwT%xbA_bTH%pl!q)*7BPu2$p3 zem&5@&G%qVD}y9=iuF3U)sB*H) z;Z_|7gid{Wj$hm?wUm+*Rt+B@slbxCeuj5!hhlo};pwMY`w2tj;a1{np7)A+2MwuR zNvTfz&t+|{+;I1X!}LlN)9;*1#wrgLpL~Mkr-@G)D{^TR$@$N<5?@nKm!{987#FzP zUAH&p;qpE&TGHkEU~YGh3+f%>K-yuI%zNvvelJpMQlS&YM336!C5kX14Y=2=UfC_K zwcSH#L$0fgF%>MZhk^f246fUcWbJ-8kHUL;x^wB;n@Y-i9A-dH=5VYb$*GJp<*o}1gv%A5hjhnXm zYB*94r+0sMlW!N)Cr|d!790JNF$UQqCEia~f5f?-;!|B|GbwFe^{xbZYM|t4=l*Vr zT-=es=)8B6B)0ftF70KjvUpYeD0Ul!alEit;cgWKfBz4A*iX^I=G3NUFEER^Kv74| zQJ=G0nWnk8h8=t+9*1CzK9p_~CAHazw_!|{$0c&w{a;;GNfErg7Ei9yz~cTIPcN-f z_1;sEmDy@Q{b1Lvj%nd-rTaY2XJ5PpHpR#np}W3FRnS1ABsG1h^FKV_`I(tW?x-Jt zqPhJPO_yiDxL4ZH)?<s4VKz`7ri^z;%2U7K@RrPu$69j@*;JrO|GFtm^K#Z0Uu;!h!q6-wAEz(6Nb>=f|2zBWh5h zjFsruss8wg^Jkk>0AnXeI3G!4oAxeeYRpe&+7|ydIVP~5PTy3qwG>mzB0aQE)>an5 zP9-AS{P!6-9t|K?%++AQxtm>(tTuX}f+Zcd5$*d1+_lo0>3DykUpOpWAjzU#B9fE{HjEj=U_aQsZ5A%O8JQ zBkI&hk%$Lk0o0}(hdeQ9E^xP1jWwa53TeN6k5dheQcdu7GAtG;_a5l@^qq|p-eK80 zwi!MG@jhKgX1fK%U|5=#BEy4rs(Xk(EHMtb zh;u?v`{j)pZ?EJ~kb>_vr`k=1)E5SqOFw^Cer~ZqZ`$|n4l-BKW6;HWpSu~3k!aNy z``Hq?O`BakovSGl3Tw(sX>+T>)NWLzad7pZn;&Jr&&KsG#WZ~g+KQ&vo-`|QkRjmE zwgH&qg%-Br`W?Oxw%Eg#wEya5ia&Fmqjq`z(#5IcX0wrVwrAnUaj}h}pG51gI?BIM z9i>8>%+YTAl-r&_%zkXKNS9T8d}}VsmZx)X#i5b+g`>?g4ROnv3d(!795&}Zbsw`9 zs2%vY0&Dgz>=KGTbEQwK#KbrXMZQ5SZj~EF#UUb-TlaJ%^S|JwHv*EmH<>Y|Vq{}H z8Bta6u|b$IkC_RJr!K^i?e=hk@$3Fd(D38}f(MyzeUm zRoP95YssCBQZvHjZn_8Rp_J7poGY3h6Po7#yUY3yz@epni^90Nbm7OdU0HAx14Kl! zvv3SW1QiKmnhiG>6-Sjpc zB8>zGK>Xs#2%TiycHCT2#-pZpPRT^$9{w*?^^$~K7AU6gQJbEP=Xskbr3L6H?~S^rbKxQ7_6272A>{?ur?4=I1-=v% zi_gZ~Q>Z0&%$Y7;WyPcW42N$21Q}Ar*xEqrgRSQw8WHlK*fCYuO(mLt5F!$B!1d1Z zs`Sr1`{1vFegNvPx$Vz0XFGeD){u-1;z9qqf#pdx3{IHPBf#B}inhE`hXbsQ=)kFU zWBAO4mQg{6QgZ)sszW-(i5RWzoZ{ZYXVec9&>KaMv^ZxL8N7;4bM^ea4v><{wv=ad zC7)*Kj}2&_^rCDj&+1~1z1^=zJlMVoIJ6qP#8Zr?YnzS3-O)4-oAG>}1wAaLu`w;X zExnq>v|O5@>_mZ{pI(Xi8ZFMU&FXe&eUI&);aI<2xW}_DCI<{H9+leeWH76fdMdUt z_ar@|9x$6JN4UB#UEtq!RWiN!5qnjz_=89%?o^?v?w@0p1 zslK9ELBoVQ0IQBm%ebtVarkcwSIwuh=0~4aQUhwg)3WLBT<`6AVqe_qmQtcc$PjSO zn4K(486)_uQ^N}-&F-}b5qu0jEgUA<;+qXtgkNaiCw@=p_wAyf@cbeiwABV7K8Qn- z*(sL)dU~4~Y{6$uI3qzk=s$=HmnrnM zOW-TupYq|u1cX3*fUK+)IyOuYh>Z;s#33Ui1JIFSn!pSntKbLN*x1_ex$v;Vr`X5< z$&V25ouUxd2n5@Kt!es$RuK84Ishi&1HklvNX^%v$FK%48K5E(80&||u!bOXQgx7? z9&C|Pm~im!Bp4xT2!RhK=fele0)LPL0?@!u5uT#mT^;sexodf+B}4$>!&X{_eE={? z;ZuaWg-~Iq0kA70z+{3jfgwIN5=@&2Q|$}qJ!|T zu~{zQm*KI<$XH-2tKO25-6DamV2VC2P&VjJu?O1}0Jj_fOTcFUK;dplRxE%g>^iU; zz;1>NJHr8BL5C?50k8`q!)zk~;DsHL!gPfkcWqz~!wXX-A^=QavP0N6V9yWx2Nz5p z$a1%TCyxZc4q&p#yA@wKVAr>V9l}IERTB8DW3AcPG_gcUpv9R}l8~bHJns0O-$#v6N&*sGriTT=%v~ z@Voe$o|BdGgxGA6j60IL;ftZlxT;o4@Nn|We8GrzDW`JENEs}ZmqeE|K?9spRzn}A z4Exoi+H+~DdmczwOjC6~7vtiBq=3}B=O|e}9T&y*n#R!{hFIhdrEocLwPYzun>p30 zl3%nXzw7I#dXH)R!pq6^%tRAjBvVUN00{ro$x`W?(n1S2m1RMm3^+x7_03-Dl=o8a z^#G71!^!&%ajaqDLSJCDomrhz4^~1+F2s6HaMJ7o=qRK>^2qB@H+ZKh_If3`a(dO z^#)YugOy#4S6QY$hLAFe*w|_!q=tz0gt#V{limpGm!(SQEvSNR}trR+hvsD z(Bkh`BlOoLrYj0FG$|IdVRcOog|#MA%}p~B-DZhG%ZuvNQUQ0Mj)xfkhEI!IPQdW@izXrPD2qwZViK`si#c)$;U;|r~{EIHjrvZQ;ge+ zxdbQ~wQ*tPg$rF4_;mh>H;&E(V&gbMiZrAa^u{(s{p)kV`*4b083!ecOTiH9w@p*? z5YU3ZBHVdvB&})`ohZQtwpV1 z$qDHqY`F!rxVc`>X*rVNITD-jZgrtDUI@cTsyM1)ov4|}!t1)%78oQi*17-GX6 z!}7FSeNGpZ=hU*)$CAY= z{-QgCf3OXonr$f9fo9*6RO-*JavzL#!jp)U5+;Q)+?6Ok{(eQT?el zKB46G79?s$m^zdI}>CM`skN5>jajY<(Wg17z)`4b`F( zzk@t@R+J8P;fdSsA@mXkx5x7*bT^*(H8WcDFrdAa2&GvNG+_fiF*(Pa24YHGo{xh7 zRf`kGO$9*HDBJ0~-jQ7pKMcXBt2X5(Nx#L+Y>JVWjw`L7-^*NN7)}*OFNRjnFD}(8 z8=Lda8@qnFqW7SEq!9;h0#!37;)j5+CLl=23lNKGpu&p23$0d{E`GtHEWFNFN%4el z%MJSh#*RF6S}M&YmR$teo!!DtmE52m$;%qOnDThr>0!{^i26K8Q&gB6Lu;RY{RD5e zWaB|;asyv`llUW_couCwQPc$!39~vO>2CkT(qdYUI2HkB9kZs;IJ`WpN=W%A5OD$m zxHA_a+g-odb7dIiwNDD6jC`fQ zSqoE<1v6M*7Ow7iE3p7nsBU^pQB{&0hc~JYm_X9uyYr-2uw}Yum3E9ipF$OQ-dV|u z3gXhRU2-p~#oJ;_7V9JJ2+R*K>>9Uw7iXW82A5wL+%NJ~MW;BT3bVP2JAu zai7GoP$Nt`Zc08`h5tk}?%(=3*e~FxE&k(_(rDsU*ILVIW!>DfO9BC_29pHvc4HQ? z&VW{Qa8g=_G`d$p(A;K^k}?m-i3Z~xl1)6Ky3zYmE{3a8XUTz^om4YoD*PkmM1iqrny zy*#DD2TN>?3qI&olMj*o0zR2vG{ek`>~$18spF_Ul&*c`AQnKhk1xVshgbWd8Mk5n zmxpQ}m+g0j4s4g4HTs?N-0~9&fx)rh{l+Zv+4U-*uUl5HB9^mD5NM@SNSW`cEpYgK zn^Pv74hJXo&*qBZ>rMb-)>@Nt>+4ku`A~;15F~Qj%p~Aqeto$6-4xHL1^&jVs>{8o z<^+4YgEvg67FYL(WAc!-;r6Ib@M6c68xLl_2$v*{UmojclRZ@uCg8DpH$Wmw?S6xj ztz@m)^sLXzHYu;+64%$I>En{C_Gp42-#ZI~_`LVII}-K|u%9j)qS`tM8ATaNA18jv zmEXE3-`>gBptq}R%x!deQLOZO4u#}@2C@L_DcR;A$joZUOkW7}85tB?-U1v)zT{S) z#7+10?FYB4X(0roz{KYDucB)FF03veL)1*7Pc)}+ZxSF>e*+F%a$aYhHdzn0qJ!Vy zYYZM@Ey&k*wtI)C^mm^t{?<}I0?pT(tM@n)~|C;`c{?9IepX=?qI`^iZH4yr){ z<9Rb;DG5DSGV?_t3y$$j#`09VDN%`{o%=j^r&?nF9P$v0YM zGy}R%O@`W>bl#1~Fqt3R zPgl5d5zA~PB`|f%@7zWYPbhC+auu2szT|U#?ZgxqeWdwKM?Phk`H#aD{-4}o`54Fx zqtm?d|0>1legmH@;c74G`q1s0tv}Fxwqp?$xLfd04}j3+z&a`msOpc&@J{5E#xp~sBW78 ztF@44&2nERV9qXNWBymP<|lfiB=Q0VtUrOF-eOL^sCI>$-7Y%$oO{R&M=Z)~Y84B< zXh@;gD<@qFam#7bLADMIa@i|-uEfXea4_Td*`WYc1;x$EwR3}EqU(+Y{J@p079a3? zX|`$kGu3TieI|DN_5}&pPknl3N@ZSw^6lMr_cFN$$I12Y^jLGs?t&Z6dj60)y9MdvBa?sbltAC_-2#3a>=-K88t{J1!BG9X9V+i{B-EQOST>>3Su&_ z_-zM`%DS^IlOf0RyQow=TWGixC-fWRtsHa!foI)dP99DsZv6C*WTo|!iY1BL0~<}> zikj}RB;63nS~x|4r{`+(IjifZLftajRPpp(f+}|xq?P!Y-Kox&z@L2iDE^`AK?E6QJ=^N8Ikr*91-uRA&d~5p))rz+ zOIXD9iG^Sl$qWfp`d1MB`z$M1sX-XX%wDt})GN(z^!*}V!dksZpr#>HjLOets4t}8FTOIyt+0E+LIpY`K)5#DnAMp#a@bMo{$bCvYZQl;x|CBoe zg5tZ2zp{!4qcr6ZUnORe1qJ7fOA^@!x(cnOztG?Xc|hoc(v1o(H836*vt5ok3g_7& zA^m7AVuy#_>|4c)P;^N{t5>9+bHvF^TDHEx8k{=#RRf@XV4{Wg4t@AhZx4uG@@TRB zrssFDtsf1h{%$~)+8GrwQ8>}jk2$xpNd&DWaD;BdRkvGwM!>Sibe{aJ5GwteFC5LW?z{x+3&y?$O(`FC`O>(Xe}e8Z~?+|7Os(E$wcdP)#07LA|JfQ zZ_^Sw*CNVYj4glJ!X_1qgRVw4YQEKHFN2^^5=mpH1n~U^XfgFf;Z1~F(zp_-wM$Sj zEas^3JoAhja_@gr0H;h&-uJWT`jNi2IGOWH zbo-P0uYWj`CwnR2iN(VnwwpLC%V~s)SRmo1Rma@d5hR8h>r!0V;IRO{4h@OklNzV{ zDU1Fw@3~UrZOB_vZR=yreRV1WW;6c|O;Ab{BHkh%+J1+dH%N@?$N9F3!PJ>DkMYtx z55wm&){Sen>*s_T!`BdU5co5$Sdgb>3lhH%ZHJv^vCpw@tgxmL)Y4cRK!@{{SOHN9x~D2TN=wZkk6JLH^lBKR?#bI|@nyo_K%R z>5gLkH|zv{*DlRz{{13F&{ZdyCe3HpN2_3b38`eV?&DgJ=Ae*(+l`Cu=g@*9ad!%= zzaattXdf>+{h~i;p*5k=Wxp5__va&~)-MDwnYGmY2c)>|Z{V{fTy#U&`^0R66Lb47 zas0-Ha2A84dPM|m@lBJK-{r1J5=3TuA<2w@2(*3A~Fek=5f-u&c# zrU)-5^%7_A(g*B<9?I__zLvgi=#_)a!$(Eg2pRwPZfL16t~4HWKC_v7Qk{FlT7UZ| z;|}=WUi>-grRfvNa+xbmqpMZ>L(!}3H$Yi+r|VeoabwEEgG%%d!K8`ZVgz1+bppGs z;@UjVoZa3hh1f?UYlY>O&T)4%ao?V;;+GNMWp;m%zfusvXW)s}^!XQ8X#VUazyAP~ z)yJ`4m)}txl3c%x9%Bc5lCIx!6(8mkux7PO@^+2ikTMGPufj@ox+9s@pE`UxM>P0L z$KiEbhq=mL9*P@MJ0qeNB=JvBuhG{Z_@YJD5q4TQutaJKR&CJd_HH0K zZejF`z{4-2-(1oKx+h#6S)4d2yRFVJE`4~2MMsclQwWG|)Pv84vH2eg(!VZoo%t{P zdZ^&1oO)PZ6pMkYY1eglMv7m5;ivL)X09+5jA&JMc~ZF$gcLy5WaeR|^B=RrA8QBP zYP@ZmQ)=x!ywRFyuXLE)QE&43?QrMVCRTiaRpkWN-g2Vm(eEey7cUFXT1Nk$lyq`h zZai_WZ?%ME=pSIRe|S~-uYBis<~u(RU;I})Nt=sho^s7U&F3*TMr`iu>uZ980|}$U GPW~VN&FgLe literal 0 HcmV?d00001 diff --git a/examples/btn_热点.png b/examples/btn_热点.png new file mode 100644 index 0000000000000000000000000000000000000000..704efe735f1aff9c3dba7b7415faa92411dc2e9f GIT binary patch literal 4194 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 { console.log('模型点击事件', data); }); + sdkKernel.on('all:ready', (data) => { + console.log('所有模块加载完,', data); + sdkKernel.material.apply({ + target: 'Material__2', + attribute: 'alpha', + value: 0.5, + }); + + + sdkKernel.hotspot.render([ + { + id: "h1", + name: "卷帘门", + meshName: "Valve_01", + icon: "https://bpic.588ku.com/element_pic/20/06/30/d1046b01afc0b9586844350d131f4daf.jpg!/fw/253/quality/90/unsharp/true/compress/true", + offset: [25, 25, 0], + radius: 20, + color: "#21c7ff", + payload: { type: "valve", code: "A" }, + }, + ]); + }); + } diff --git a/examples/module-demo.html b/examples/module-demo.html index bdf2c33..6da9084 100644 --- a/examples/module-demo.html +++ b/examples/module-demo.html @@ -2,70 +2,185 @@ - - - SDK 模块化加载示例 + + + 3D Model Showcase SDK - TS + - - + // const config = { + // container: document.querySelector('#renderDom'), + // modelUrlList: ['/assets/model.glb'], + // env: { envPath: '/assets/hdr.env', intensity: 1.2, rotationY: 0.3, background: false }, + // }; - - + + kernel.on('model:loaded', (data) => { + console.log('模型加载完成', data); + // 隐藏进度条 + const progressContainer = document.getElementById('progress-container'); + if (progressContainer) { + progressContainer.style.display = 'none'; + } + + + + }); + + kernel.on('all:ready', (data) => { + console.log('所有模块加载完,', data); + kernel.material.apply({ + target: 'Material__2', + attribute: 'alpha', + value: 0.5, + }); + + + kernel.hotspot.render([ + { + id: "h1", + name: "卷帘门", + meshName: "Valve_01", + icon: "./btn_热点.png", + offset: [25, 25, 0], + radius: 20, + color: "#21c7ff", + payload: { type: "valve", code: "A" }, + }, + ]); + }); + + + kernel.on('model:click', (data) => { + console.log('模型点击事件', data); + console.log(data); + + }); + + kernel.on('hotspot:click', (data) => { + console.log('热点被点击:', data); + const { id, name } = data + if (name === "卷帘门") { + kernel.door.toggle({ upY: 28, downY: 0, speed: 12 }); + + // Y轴剖切,只作用于卷帘门网格,保留下方,剖掉上方 + const clipHeight = 28; // 调整这个值找到合适的剖切高度 + console.log('设置剖切:', clipHeight); + kernel.clipping.setY(clipHeight, true, ['Box005.001', 'Box006.001']); + } + }); + + + // 添加模型到场景 + await kernel.model.add('/models/car.glb'); + + // 销毁模型 + kernel.model.destroy('car'); + + // 替换模型 + await kernel.model.replace('car', '/models/new-car.glb'); + + + \ No newline at end of file diff --git a/index.html b/index.html index f8d0441..4d25b21 100644 --- a/index.html +++ b/index.html @@ -21,6 +21,12 @@ #app { width: 100vw; height: 100vh; + display: flex; + position: relative; + } + + #canvas-container { + flex: 1; position: relative; } @@ -30,6 +36,157 @@ display: block; } + #config-panel { + width: 320px; + background: rgba(30, 30, 45, 0.95); + backdrop-filter: blur(10px); + overflow-y: auto; + padding: 20px; + box-shadow: -2px 0 10px rgba(0, 0, 0, 0.3); + } + + #config-panel::-webkit-scrollbar { + width: 6px; + } + + #config-panel::-webkit-scrollbar-track { + background: rgba(255, 255, 255, 0.1); + } + + #config-panel::-webkit-scrollbar-thumb { + background: rgba(255, 255, 255, 0.3); + border-radius: 3px; + } + + .config-title { + color: #fff; + font-size: 18px; + font-weight: bold; + margin-bottom: 20px; + padding-bottom: 10px; + border-bottom: 2px solid rgba(255, 255, 255, 0.2); + } + + .config-category { + margin-bottom: 15px; + border-radius: 8px; + overflow: hidden; + background: rgba(255, 255, 255, 0.05); + } + + .category-header { + padding: 12px 15px; + background: rgba(255, 255, 255, 0.1); + color: #fff; + cursor: pointer; + display: flex; + justify-content: space-between; + align-items: center; + transition: background 0.3s; + user-select: none; + } + + .category-header:hover { + background: rgba(255, 255, 255, 0.15); + } + + .category-header.active { + background: rgba(76, 175, 80, 0.3); + } + + .category-title { + font-size: 14px; + font-weight: 600; + } + + .category-arrow { + transition: transform 0.3s; + font-size: 12px; + } + + .category-arrow.expanded { + transform: rotate(180deg); + } + + .category-content { + display: grid; + grid-template-rows: 0fr; + overflow: hidden; + transition: grid-template-rows 0.3s ease, padding 0.3s ease; + padding: 0 15px; + } + + .category-content.expanded { + grid-template-rows: 1fr; + padding: 15px; + } + + .category-content>* { + min-height: 0; + } + + .option-item { + margin-bottom: 12px; + } + + .option-label { + color: rgba(255, 255, 255, 0.8); + font-size: 13px; + margin-bottom: 8px; + display: block; + } + + .option-group { + display: flex; + flex-wrap: wrap; + gap: 8px; + } + + .option-btn { + padding: 8px 16px; + border: 1px solid rgba(255, 255, 255, 0.3); + background: rgba(255, 255, 255, 0.05); + color: #fff; + border-radius: 4px; + cursor: pointer; + font-size: 12px; + transition: all 0.3s; + } + + .option-btn:hover { + background: rgba(255, 255, 255, 0.1); + border-color: rgba(255, 255, 255, 0.5); + } + + .option-btn.selected { + background: rgba(76, 175, 80, 0.6); + border-color: #4CAF50; + } + + .option-checkbox { + display: flex; + align-items: center; + padding: 8px; + border-radius: 4px; + cursor: pointer; + transition: background 0.3s; + } + + .option-checkbox:hover { + background: rgba(255, 255, 255, 0.05); + } + + .option-checkbox input[type="checkbox"] { + margin-right: 8px; + cursor: pointer; + } + + .option-checkbox label { + color: rgba(255, 255, 255, 0.8); + font-size: 12px; + cursor: pointer; + } + /* 进度条样式 */ #progress-container { position: absolute; @@ -63,108 +220,210 @@

- - + diff --git a/index.js b/index.js new file mode 100644 index 0000000..0e6ef88 --- /dev/null +++ b/index.js @@ -0,0 +1,108 @@ +import { kernel } from './src/main.ts'; + +// import { kernel } from 'https://sdk.zguiy.com/zt/assets/index.js'; + +// const config = { +// container: document.querySelector('#renderDom'), +// modelUrlList: ['/assets/model.glb'], +// env: { envPath: '/assets/hdr.env', intensity: 1.2, rotationY: 0.3, background: false }, +// }; + +const config = { + container: document.querySelector('#renderDom'), + modelUrlList: ['https://sdk.zguiy.com/resurces/model/model.glb'], + env: { envPath: 'https://sdk.zguiy.com/resurces/hdr/hdr.env', intensity: 1.2, rotationY: 0.3, background: true }, +}; + +kernel.init(config); + + + +kernel.on('model:load:progress', (data) => { + console.log('模型加载事件', data); + + + + const progress = data.progress || 0; + const progressBar = document.getElementById('progress-bar'); + const progressText = document.getElementById('progress-text'); + const progressContainer = document.getElementById('progress-container'); + + if (progressContainer) { + progressContainer.style.display = 'block'; + } + if (progressBar) { + progressBar.style.width = `${progress * 100}%`; + } + if (progressText) { + progressText.textContent = `${Math.round(progress * 100)}%`; + } +}); + + + +kernel.on('model:loaded', (data) => { + console.log('模型加载完成', data); + // 隐藏进度条 + const progressContainer = document.getElementById('progress-container'); + if (progressContainer) { + progressContainer.style.display = 'none'; + } + + + +}); + +kernel.on('all:ready', (data) => { + console.log('所有模块加载完,', data); + kernel.material.apply({ + target: 'Material__2', + attribute: 'alpha', + value: 0.5, + }); + + + kernel.hotspot.render([ + { + id: "h1", + name: "卷帘门", + meshName: "Valve_01", + icon: "https://bpic.588ku.com/element_pic/20/06/30/d1046b01afc0b9586844350d131f4daf.jpg!/fw/253/quality/90/unsharp/true/compress/true", + offset: [25, 25, 0], + radius: 20, + color: "#21c7ff", + payload: { type: "valve", code: "A" }, + }, + ]); +}); + + +kernel.on('model:click', (data) => { + console.log('模型点击事件', data); + console.log(data); + +}); + +kernel.on('hotspot:click', (data) => { + console.log('热点被点击:', data); + const { id, name } = data + if (name === "卷帘门") { + kernel.door.toggle({ upY: 28, downY: 0, speed: 12 }); + + // Y轴剖切,只作用于卷帘门网格,保留下方,剖掉上方 + const clipHeight = 28; // 调整这个值找到合适的剖切高度 + console.log('设置剖切:', clipHeight); + kernel.clipping.setY(clipHeight, true, ['Box005.001', 'Box006.001']); + } +}); + + +// 添加模型到场景 +// await kernel.model.add('https://sdk.zguiy.com/resurces/model/百叶1.glb'); + +// 销毁模型 +// kernel.model.destroy('car'); + +// 替换模型 +// await kernel.model.replace('car', '/models/new-car.glb'); + diff --git a/mock-arkit-server.js b/mock-arkit-server.js deleted file mode 100644 index 2ce0310..0000000 --- a/mock-arkit-server.js +++ /dev/null @@ -1,113 +0,0 @@ -/** - * 模拟 ARKit 数据的 WebSocket 服务器 - * 运行: node mock-arkit-server.js - */ - -const WebSocket = require('ws'); - -const PORT = 8765; -const wss = new WebSocket.Server({ port: PORT }); - -// ARKit 52 个 blendShape 完整列表 -const ARKIT_BLENDSHAPES = [ - 'eyeBlinkLeft', 'eyeLookDownLeft', 'eyeLookInLeft', 'eyeLookOutLeft', 'eyeLookUpLeft', 'eyeSquintLeft', 'eyeWideLeft', - 'eyeBlinkRight', 'eyeLookDownRight', 'eyeLookInRight', 'eyeLookOutRight', 'eyeLookUpRight', 'eyeSquintRight', 'eyeWideRight', - 'jawForward', 'jawLeft', 'jawRight', 'jawOpen', - 'mouthClose', 'mouthFunnel', 'mouthPucker', 'mouthLeft', 'mouthRight', - 'mouthSmileLeft', 'mouthSmileRight', 'mouthFrownLeft', 'mouthFrownRight', - 'mouthDimpleLeft', 'mouthDimpleRight', 'mouthStretchLeft', 'mouthStretchRight', - 'mouthRollLower', 'mouthRollUpper', 'mouthShrugLower', 'mouthShrugUpper', - 'mouthPressLeft', 'mouthPressRight', 'mouthLowerDownLeft', 'mouthLowerDownRight', - 'mouthUpperUpLeft', 'mouthUpperUpRight', - 'browDownLeft', 'browDownRight', 'browInnerUp', 'browOuterUpLeft', 'browOuterUpRight', - 'cheekPuff', 'cheekSquintLeft', 'cheekSquintRight', - 'noseSneerLeft', 'noseSneerRight', 'tongueOut' -]; - -// 表情预设 -const expressions = [ - { name: '微笑', data: { mouthSmileLeft: 0.8, mouthSmileRight: 0.8, cheekSquintLeft: 0.3, cheekSquintRight: 0.3 } }, - { name: '张嘴说话', data: { jawOpen: 0.5, mouthFunnel: 0.3 } }, - { name: '惊讶', data: { eyeWideLeft: 0.9, eyeWideRight: 0.9, jawOpen: 0.6, browInnerUp: 0.7 } }, - { name: '皱眉', data: { browDownLeft: 0.8, browDownRight: 0.8, eyeSquintLeft: 0.3, eyeSquintRight: 0.3 } }, - { name: '嘟嘴', data: { mouthPucker: 0.9, mouthFunnel: 0.4 } }, - { name: '吐舌', data: { tongueOut: 0.7, jawOpen: 0.4 } }, - { name: '生气', data: { noseSneerLeft: 0.7, noseSneerRight: 0.7, browDownLeft: 0.6, browDownRight: 0.6, jawOpen: 0.2 } }, - { name: '悲伤', data: { mouthFrownLeft: 0.7, mouthFrownRight: 0.7, browInnerUp: 0.5, eyeSquintLeft: 0.2, eyeSquintRight: 0.2 } }, - { name: '中性', data: {} }, -]; - -let currentExprIndex = 0; -let transitionProgress = 0; -let blinkTimer = 0; -let isBlinking = false; - -function lerp(a, b, t) { - return a + (b - a) * t; -} - -function generateBlendShapes() { - const current = expressions[currentExprIndex].data; - const next = expressions[(currentExprIndex + 1) % expressions.length].data; - - // 初始化所有 52 个 blendShape 为 0 - const blendShapes = {}; - ARKIT_BLENDSHAPES.forEach(name => blendShapes[name] = 0); - - // 插值当前和下一个表情 - for (const key of ARKIT_BLENDSHAPES) { - const currentVal = current[key] || 0; - const nextVal = next[key] || 0; - blendShapes[key] = lerp(currentVal, nextVal, transitionProgress); - } - - // 自然眨眼(每3-5秒眨一次) - blinkTimer++; - if (!isBlinking && blinkTimer > 90 + Math.random() * 60) { - isBlinking = true; - blinkTimer = 0; - } - if (isBlinking) { - const blinkProgress = blinkTimer / 6; - if (blinkProgress < 1) { - blendShapes.eyeBlinkLeft = Math.sin(blinkProgress * Math.PI); - blendShapes.eyeBlinkRight = Math.sin(blinkProgress * Math.PI); - } else { - isBlinking = false; - blinkTimer = 0; - } - } - - // 添加微小的随机抖动(更自然) - blendShapes.jawOpen += (Math.random() - 0.5) * 0.02; - blendShapes.browInnerUp += (Math.random() - 0.5) * 0.01; - - // 表情过渡 - transitionProgress += 0.015; - if (transitionProgress >= 1) { - transitionProgress = 0; - currentExprIndex = (currentExprIndex + 1) % expressions.length; - console.log(`切换到表情: ${expressions[currentExprIndex].name}`); - } - - return blendShapes; -} - -wss.on('connection', (ws) => { - console.log('客户端已连接'); - - const interval = setInterval(() => { - if (ws.readyState === WebSocket.OPEN) { - const data = generateBlendShapes(); - ws.send(JSON.stringify(data)); - } - }, 33); // ~30fps - - ws.on('close', () => { - console.log('客户端断开'); - clearInterval(interval); - }); -}); - -console.log(`ARKit 模拟服务器运行在 ws://localhost:${PORT}`); -console.log('表情循环: ' + expressions.map(e => e.name).join(' -> ')); diff --git a/src/babylonjs/AppHotspot.ts b/src/babylonjs/AppHotspot.ts index f96d3de..b798108 100644 --- a/src/babylonjs/AppHotspot.ts +++ b/src/babylonjs/AppHotspot.ts @@ -148,9 +148,9 @@ export class AppHotspot extends Monobehiver { } // 释放sprite资源 - if (point.sprite) { - point.sprite.dispose(); - } + // if (point.sprite) { + // point.sprite.dispose(); + // } } // 清空热点池 diff --git a/src/babylonjs/AppModel.ts b/src/babylonjs/AppModel.ts index ae86f3f..c6037a0 100644 --- a/src/babylonjs/AppModel.ts +++ b/src/babylonjs/AppModel.ts @@ -149,6 +149,54 @@ export class AppModel extends Monobehiver { this.skeletonMerged = false; } + /** + * 添加模型到场景 + * @param modelUrl 模型URL路径 + */ + async addModel(modelUrl: string): Promise { + const handleProgress = (event: ISceneLoaderProgressEvent): void => { + const progress = event.lengthComputable && event.total > 0 + ? Math.min(1, event.loaded / event.total) + : 0; + EventBridge.modelLoadProgress({ + loaded: progress, + total: 1, + url: modelUrl, + progress, + percentage: Number((progress * 100).toFixed(2)), + detail: { + url: modelUrl, + lengthComputable: event.lengthComputable, + loadedBytes: event.loaded, + totalBytes: event.total + } + }); + }; + + const result = await this.loadSingleModel(modelUrl, handleProgress); + + if (result.success) { + EventBridge.modelLoaded({ urls: [modelUrl] }); + } else { + EventBridge.modelLoadError({ url: modelUrl, error: result.error }); + } + + return result; + } + + /** + * 替换模型:销毁旧模型并加载新模型 + * @param modelName 要替换的模型名称 + * @param newModelUrl 新模型的URL路径 + */ + async replaceModel(modelName: string, newModelUrl: string): Promise { + // 先销毁旧模型 + this.destroyModel(modelName); + + // 加载新模型 + return await this.addModel(newModelUrl); + } + /** * 销毁指定模型 * @param modelName 模型名称 diff --git a/src/event/bridge.ts b/src/event/bridge.ts index 16072f6..fd91f69 100644 --- a/src/event/bridge.ts +++ b/src/event/bridge.ts @@ -41,7 +41,7 @@ export class EventBridge { // Listeners static onModelLoadProgress(callback: (payload: ModelLoadProgressPayload) => void, context?: unknown): Emitter { - return on("model:load:progress", callback, context); + return on("model:load:progress", callback, context); } static onModelLoadError(callback: (payload: ModelLoadErrorPayload) => void, context?: unknown): Emitter { @@ -59,14 +59,14 @@ export class EventBridge { static onSceneReady(callback: (payload: SceneReadyPayload) => void, context?: unknown): Emitter { return on("scene:ready", callback, context); } - static onAllReady(callback: (payload: SceneReadyPayload) => void, context?: unknown): Emitter { + static onAllReady(callback: (payload: SceneReadyPayload) => void, context?: unknown): Emitter { return on("all:ready", callback, context); } static onHotspotClick(callback: (payload: HotspotClickPayload) => void, context?: unknown): Emitter { return on("hotspot:click", callback, context); } static onceSceneReady(callback: (payload: SceneReadyPayload) => void, context?: unknown): Emitter { - return once("scene:ready", callback, context); + return once("scene:ready", callback, context); } static off(eventName?: string, callback?: (...args: unknown[]) => void): Emitter { diff --git a/src/hotspot/HotSpot.ts b/src/hotspot/HotSpot.ts index 6b5eb0d..824375f 100644 --- a/src/hotspot/HotSpot.ts +++ b/src/hotspot/HotSpot.ts @@ -48,12 +48,12 @@ class HotSpot { Point_Event(prams: HotspotPrams) { const iconPath = prams.icon + // 为每个热点创建独立的材质 const texture = new Texture(iconPath, this.mainApp.appScene.object) texture.hasAlpha = true texture.getAlphaFromRGB = false - const material = new StandardMaterial(`hotspotMaterial_${Math.random()}`, this.mainApp.appScene.object) material.diffuseTexture = texture material.emissiveTexture = texture @@ -62,17 +62,12 @@ class HotSpot { material.transparencyMode = 2 // ALPHABLEND 模式 material.disableLighting = true material.backFaceCulling = false - + // 检查纹理是否已加载 - if (texture.isReady()) { - // 纹理已准备好,立即创建热点 - this.createPointPlane(prams, material) - } else { - // 纹理未准备好,等待加载完成 - texture.onLoadObservable.addOnce(() => { + this.createPointPlane(prams, material) - }) - } + + } // 创建点平面的具体实现 diff --git a/src/kernel/Adapter.ts b/src/kernel/Adapter.ts index 39ed7f3..aa71224 100644 --- a/src/kernel/Adapter.ts +++ b/src/kernel/Adapter.ts @@ -14,10 +14,26 @@ export class KernelAdapter { /** 模型管理 */ model = { /** - * 销毁指定模�? * @param modelName 模型名称 + * 添加模型到场景 + * @param modelUrl 模型URL路径 + */ + add: async (modelUrl: string): Promise => { + await this.mainApp.appModel.addModel(modelUrl); + }, + /** + * 销毁指定模型 + * @param modelName 模型名称 */ destroy: (modelName: string): void => { this.mainApp.appModel.destroyModel(modelName); + }, + /** + * 替换模型 + * @param modelName 要替换的模型名称 + * @param newModelUrl 新模型的URL路径 + */ + replace: async (modelName: string, newModelUrl: string): Promise => { + await this.mainApp.appModel.replaceModel(modelName, newModelUrl); } }; diff --git a/test.zip b/test.zip new file mode 100644 index 0000000000000000000000000000000000000000..d71dce8d22a0e7d716152a1b50b9bbba5413b706 GIT binary patch literal 7995 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 window.Customization3DViewer; + + const load3DModel = (modelUrl, productId) => { + const viewer = get3DViewer(); + return viewer ? viewer.loadModel(modelUrl, productId) : Promise.resolve(false); + }; + + const clear3DModel = () => { + const viewer = get3DViewer(); + return viewer ? viewer.clearModel() : Promise.resolve(); + }; + + const show3DEmpty = () => { + get3DViewer()?.showEmpty(); + }; + + const get3DModelUrl = (productId, variantId, wrapper) => { + const viewer = get3DViewer(); + return viewer ? viewer.getModelUrl(productId, variantId, wrapper) : Promise.resolve(null); + }; + + const get3DHotspots = () => { + const hotspots = window.CUSTOMIZATION_3D_HOTSPOTS; + if (!Array.isArray(hotspots)) return []; + return hotspots + .filter((item) => item && typeof item === 'object') + .map((item) => { + const meshName = String(item.meshName || '').trim(); + if (!meshName) return null; + + let offset = [0, 0, 0]; + if (Array.isArray(item.offset) && item.offset.length >= 3) { + const parsed = item.offset.slice(0, 3).map((v) => Number(v)); + if (parsed.every(Number.isFinite)) { + const maxAbs = Math.max(...parsed.map((v) => Math.abs(v))); + offset = parsed; + } + } + + const next = { + id: String(item.id || meshName), + name: String(item.name || item.id || meshName), + meshName, + offset, + }; + + const color = String(item.color || '').trim(); + if (/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(color)) next.color = color; + + const r = Number(item.radius); + if (Number.isFinite(r) && r > 0) { + next.radius = Math.min(Math.max(r, 0.5), 30); + } else { + const defaultRadius = Number(window.CUSTOMIZATION_3D_HOTSPOT_RADIUS_DEFAULT); + next.radius = Number.isFinite(defaultRadius) && defaultRadius > 0 + ? Math.min(30, defaultRadius) + : 18; + } + + const icon = String(item.icon || '').trim(); + if (icon && (/^https?:\/\//i.test(icon) || icon.startsWith('//'))) { + next.icon = icon; + } + + if (item.payload && typeof item.payload === 'object' && !Array.isArray(item.payload)) { + next.payload = item.payload; + } + + return next; + }) + .filter(Boolean); + }; + + const getHotspotActionConfig = (detail = {}) => { + const all = window.CUSTOMIZATION_3D_HOTSPOT_ACTIONS; + if (!all || typeof all !== 'object') return null; + return all[detail.id] || all[detail.name] || null; + }; + + const handle3DHotspotClick = (event) => { + const detail = event?.detail || {}; + const viewer = get3DViewer(); + if (!viewer) return; + + if (typeof window.CUSTOMIZATION_3D_ON_HOTSPOT_CLICK === 'function') { + try { + window.CUSTOMIZATION_3D_ON_HOTSPOT_CLICK(detail, viewer); + } catch (err) { + console.warn('[Customization] CUSTOMIZATION_3D_ON_HOTSPOT_CLICK failed:', err); + } + } + + const action = getHotspotActionConfig(detail); + if (action?.door) { + viewer.door?.toggle(action.door); + } + if (action?.clipping) { + const clip = action.clipping; + if (typeof clip.height === 'number') { + viewer.clipping?.setY( + clip.height, + clip.keepBelow !== false, + Array.isArray(clip.meshNames) ? clip.meshNames : [] + ); + } + } + }; + + const setup3DEventBridge = () => { + if (document.documentElement.dataset.customization3dEventsBoundCopy === '1') return; + document.documentElement.dataset.customization3dEventsBoundCopy = '1'; + + let hotspotRenderTimer = null; + const renderConfiguredHotspots = () => { + if (hotspotRenderTimer) clearTimeout(hotspotRenderTimer); + hotspotRenderTimer = setTimeout(() => { + hotspotRenderTimer = null; + const hotspots = get3DHotspots(); + const viewer = get3DViewer(); + viewer?.hotspot?.clear?.(); + if (!hotspots.length) return; + viewer?.hotspot?.render(hotspots); + }, 200); + }; + + document.addEventListener('3d:scene:ready', renderConfiguredHotspots); + document.addEventListener('3d:hotspots:update', renderConfiguredHotspots); + document.addEventListener('3d:hotspot:click', handle3DHotspotClick); + }; + + const setupWheelScrollLockOn3DContainer = () => { + const container = document.querySelector('[data-3d-container]'); + if (!container || container.dataset.customization3dWheelLockCopy === '1') return; + container.dataset.customization3dWheelLockCopy = '1'; + container.addEventListener( + 'wheel', + (e) => { + if (!container.contains(e.target)) return; + e.preventDefault(); + }, + { capture: true, passive: false } + ); + }; + + const refreshHotspots = () => { + document.dispatchEvent(new CustomEvent('3d:hotspots:update', { bubbles: true })); + }; + + window.Customization3DInteractions = { + load3DModel, + clear3DModel, + show3DEmpty, + get3DModelUrl, + get3DHotspots, + refreshHotspots, + }; + + const init3DInteractions = () => { + setup3DEventBridge(); + setupWheelScrollLockOn3DContainer(); + }; + + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', init3DInteractions); + } else { + init3DInteractions(); + } +})(); diff --git a/test/customization-3d-viewer.js b/test/customization-3d-viewer.js new file mode 100644 index 0000000..c395c08 --- /dev/null +++ b/test/customization-3d-viewer.js @@ -0,0 +1,455 @@ +window.Customization3DViewer = (function () { + 'use strict'; + + const FALLBACK_ENV_URL = 'https://sdk.zguiy.com/resurces/hdr/hdr.env'; + const CANVAS_ID = 'preview-3d-viewer'; + const RUNTIME_MODEL_ID = 'main-model'; + + let kernel = null; + let sdkInitialized = false; + let initPromise = null; + let sdkCapabilityLogged = false; + let sdkEventsBound = false; + + let currentModelId = null; + let currentModelUrl = null; + + const hasFn = (obj, key) => !!obj && typeof obj[key] === 'function'; + const awaitIfPromise = (v) => (v?.then ? v : Promise.resolve(v)); + + const el = { + loading: () => document.querySelector('[data-3d-loading]'), + empty: () => document.querySelector('[data-3d-empty]'), + container: () => document.querySelector('[data-3d-container]'), + progressBar: () => document.querySelector('[data-3d-progress-bar]'), + progressText: () => document.querySelector('[data-3d-progress-text]'), + }; + + const ensureCanvas = () => { + const existing = document.getElementById(CANVAS_ID); + if (!existing) return null; + if (existing.tagName === 'CANVAS') return existing; + + const canvas = document.createElement('canvas'); + canvas.id = CANVAS_ID; + canvas.className = existing.className || 'preview-3d-viewer'; + canvas.style.cssText = 'width:100%;height:100%;display:block;'; + existing.innerHTML = ''; + existing.appendChild(canvas); + return canvas; + }; + + const resizeCanvas = (canvas) => { + if (!canvas) return; + const dpr = window.devicePixelRatio || 1; + const { width, height } = canvas.getBoundingClientRect(); + const w = Math.max(1, Math.round(width * dpr)); + const h = Math.max(1, Math.round(height * dpr)); + if (canvas.width !== w) canvas.width = w; + if (canvas.height !== h) canvas.height = h; + }; + + const poll = (check, maxWait = 5000, interval = 100) => + new Promise((resolve) => { + if (check()) { resolve(true); return; } + const start = Date.now(); + const ticker = setInterval(() => { + if (check()) { + clearInterval(ticker); + resolve(true); + } else if (Date.now() - start >= maxWait) { + clearInterval(ticker); + resolve(false); + } + }, interval); + }); + + const waitForSDK = () => poll(() => !!window.faceSDK?.kernel); + const waitForContainer = () => { + const canvas = ensureCanvas(); + if (!canvas) return Promise.resolve(false); + return poll(() => { + const { width, height } = canvas.getBoundingClientRect(); + return width > 0 && height > 0 && canvas.offsetParent !== null; + }).then((ready) => { + if (ready) resizeCanvas(canvas); + return ready; + }); + }; + + const showLoading = (progress = 0) => { + const pct = Math.round(progress); + if (el.loading()) el.loading().style.display = 'flex'; + if (el.empty()) el.empty().style.display = 'none'; + if (el.progressBar()) el.progressBar().style.width = `${pct}%`; + if (el.progressText()) el.progressText().textContent = `${pct}%`; + }; + + const showEmpty = () => { + if (el.loading()) el.loading().style.display = 'none'; + if (el.empty()) el.empty().style.display = 'flex'; + if (el.container()) el.container().classList.remove('has-model'); + currentModelId = null; + currentModelUrl = null; + }; + + const showModelReady = () => { + if (el.progressBar()) el.progressBar().style.width = '100%'; + if (el.progressText()) el.progressText().textContent = '100%'; + setTimeout(() => { + if (el.loading()) el.loading().style.display = 'none'; + if (el.empty()) el.empty().style.display = 'none'; + if (el.container()) el.container().classList.add('has-model'); + }, 300); + }; + + const getEnvUrl = () => + window.CUSTOMIZATION_3D_ENV_URL || FALLBACK_ENV_URL; + + const buildInitConfig = (canvas, modelUrlList = []) => ({ + container: canvas, + modelUrlList, + env: { + // envPath: getEnvUrl(), + envPath: 'https://sdk.zguiy.com/resurces/hdr/hdr.env', + intensity: 1.2, + rotationY: 0.3, + background: true, + }, + }); + + const getSDKCapability = () => { + const k = kernel || window.faceSDK?.kernel; + return { + 'kernel.init': hasFn(k, 'init'), + 'kernel.on': hasFn(k, 'on'), + 'kernel.off': hasFn(k, 'off'), + 'camera.set': hasFn(k?.camera, 'set'), + 'camera.animateTo': hasFn(k?.camera, 'animateTo'), + 'lights.update': hasFn(k?.lights, 'update'), + 'environment.setHDRI': hasFn(k?.environment, 'setHDRI'), + 'hotspot.render': hasFn(k?.hotspot, 'render'), + 'hotspot.on': hasFn(k?.hotspot, 'on'), + 'model.load': hasFn(k?.model, 'load'), + 'model.replace': hasFn(k?.model, 'replace'), + 'model.destroy': hasFn(k?.model, 'destroy'), + 'model.on': hasFn(k?.model, 'on'), + 'material.apply': hasFn(k?.material, 'apply'), + 'material.batch': hasFn(k?.material, 'batch'), + 'material.reset': hasFn(k?.material, 'reset'), + 'debug': hasFn(k, 'debug'), + }; + }; + + const useRuntimeModelAPI = () => { + const cap = getSDKCapability(); + return cap['model.load'] && cap['model.replace']; + }; + + const logCapabilityOnce = () => { + if (sdkCapabilityLogged) return; + sdkCapabilityLogged = true; + const cap = getSDKCapability(); + const strategy = useRuntimeModelAPI() + ? 'runtime model API (load / replace / destroy)' + : 'kernel.init(modelUrlList) fallback'; + console.groupCollapsed('[3D] faceSDK capability report'); + console.table(cap); + console.log('[3D] active load strategy:', strategy); + console.groupEnd(); + }; + + const bindSDKEvents = () => { + if (!hasFn(kernel, 'on') || sdkEventsBound) return; + sdkEventsBound = true; + + kernel.on('model:load:progress', ({ progress = 0 } = {}) => showLoading(progress)); + kernel.on('model:loaded', () => showModelReady()); + kernel.on('model:replaced', () => showModelReady()); + kernel.on('all:ready', (data) => { + document.dispatchEvent(new CustomEvent('3d:scene:ready', { detail: data, bubbles: true })); + }); + + kernel.on('model:click', (data) => + document.dispatchEvent(new CustomEvent('3d:model:click', { detail: data, bubbles: true })) + ); + kernel.on('hotspot:click', (data) => + document.dispatchEvent(new CustomEvent('3d:hotspot:click', { detail: data, bubbles: true })) + ); + + if (hasFn(kernel?.hotspot, 'on')) { + kernel.hotspot.on('click', (data) => + document.dispatchEvent(new CustomEvent('3d:hotspot:click', { detail: data, bubbles: true })) + ); + kernel.hotspot.on('hover', (data) => + document.dispatchEvent(new CustomEvent('3d:hotspot:hover', { detail: data, bubbles: true })) + ); + kernel.hotspot.on('rendered', () => + document.dispatchEvent(new CustomEvent('3d:hotspot:rendered', { bubbles: true })) + ); + } + + if (hasFn(kernel, 'on')) { + kernel.on('camera:changed', (state) => + document.dispatchEvent(new CustomEvent('3d:camera:changed', { detail: state, bubbles: true })) + ); + } + + kernel.on('env:error', (err) => console.warn('[3D] Environment map error:', err)); + }; + + const initSDK = async () => { + if (sdkInitialized) return true; + if (initPromise) return initPromise; + + initPromise = (async () => { + try { + const [sdkReady, containerReady] = await Promise.all([ + waitForSDK(), + waitForContainer(), + ]); + if (!sdkReady || !containerReady) { + throw new Error('[3D] SDK or container not ready'); + } + + const canvas = ensureCanvas(); + if (!canvas) throw new Error('[3D] Canvas element not found'); + + if (canvas.getBoundingClientRect().width === 0) { + canvas.style.minWidth = '100px'; + canvas.style.minHeight = '100px'; + } + resizeCanvas(canvas); + + await new Promise(r => requestAnimationFrame(r)); + await new Promise(r => requestAnimationFrame(r)); + + kernel = window.faceSDK.kernel; + logCapabilityOnce(); + bindSDKEvents(); + + await awaitIfPromise(kernel.init(buildInitConfig(canvas, []))); + + sdkInitialized = true; + return true; + } catch (err) { + console.error('[3D] Initialization failed:', err); + return false; + } finally { + initPromise = null; + } + })(); + + return initPromise; + }; + + const loadModel = async (modelUrl, productId = null) => { + if (!modelUrl) { + showEmpty(); return false; + } + + if (!sdkInitialized && !await initSDK()) { showEmpty(); return false; } + + const modelId = productId ? `product-${productId}` : RUNTIME_MODEL_ID; + + if (currentModelId === modelId && currentModelUrl === modelUrl) return true; + + try { + showLoading(0); + resizeCanvas(ensureCanvas()); + + if (useRuntimeModelAPI()) { + if (currentModelUrl) { + await awaitIfPromise( + kernel.model.replace(RUNTIME_MODEL_ID, { url: modelUrl, draco: true }) + ); + } else { + await awaitIfPromise( + kernel.model.load({ id: RUNTIME_MODEL_ID, url: modelUrl, draco: true }) + ); + } + } else { + bindSDKEvents(); + await awaitIfPromise( + kernel.init(buildInitConfig(ensureCanvas(), [modelUrl])) + ); + } + + currentModelId = modelId; + currentModelUrl = modelUrl; + return true; + } catch (err) { + console.error('[3D] loadModel failed:', err); + showEmpty(); + return false; + } + }; + + const clearModel = async () => { + if (sdkInitialized && hasFn(kernel?.model, 'destroy')) { + try { + await awaitIfPromise(kernel.model.destroy(RUNTIME_MODEL_ID)); + } catch (err) { + console.warn('[3D] clearModel: model destroy failed:', err); + } + } + currentModelId = null; + currentModelUrl = null; + showEmpty(); + }; + + const getModelUrl = async (productId, _variantId = null, wrapper = null) => { + const card = wrapper + || document.querySelector(`.product-card-clickable[data-product-id="${productId}"]`); + + if (card) { + const url = card.dataset.model3dUrl || card.dataset.modelUrl; + if (url) return url; + } + + const handle = card?.dataset.productHandle; + if (handle) { + try { + const res = await fetch(`/products/${encodeURIComponent(handle)}.js`); + if (res.ok) { + const product = await res.json(); + const media = (product.media || []).find(m => m.media_type === 'model'); + if (media) { + const url = media.sources?.[0]?.url || media.src; + if (url) return url; + } + const metaUrl = product.metafields?.custom?.model_3d_url; + if (metaUrl) return metaUrl; + } + } catch (err) { + console.warn('[3D] getModelUrl: product fetch failed:', err); + } + } + + return window.CUSTOMIZATION_3D_FALLBACK_MODEL_URL || null; + }; + + const hotspot = { + render: (items = []) => { + if (!hasFn(kernel?.hotspot, 'render')) { + console.warn('[3D] hotspot.render not available in current SDK version'); + return false; + } + kernel.hotspot.render(items); + return true; + }, + clear: () => { + if (hasFn(kernel?.hotspot, 'render')) kernel.hotspot.render([]); + }, + }; + + const material = { + apply: (target, preset) => { + if (!hasFn(kernel?.material, 'apply')) { + console.warn('[3D] material.apply not available in current SDK version'); + return false; + } + kernel.material.apply({ target, material: preset }); + return true; + }, + batch: (entries = []) => { + if (!hasFn(kernel?.material, 'batch')) { + console.warn('[3D] material.batch not available in current SDK version'); + return false; + } + kernel.material.batch(entries); + return true; + }, + reset: (target) => { + if (!hasFn(kernel?.material, 'reset')) { + console.warn('[3D] material.reset not available in current SDK version'); + return false; + } + kernel.material.reset(target); + return true; + }, + }; + + const camera = { + set: (config) => { + if (!hasFn(kernel?.camera, 'set')) { + console.warn('[3D] camera.set not available in current SDK version'); + return false; + } + kernel.camera.set(config); + return true; + }, + animateTo: (config, options) => { + if (!hasFn(kernel?.camera, 'animateTo')) { + console.warn('[3D] camera.animateTo not available in current SDK version'); + return false; + } + kernel.camera.animateTo(config, options); + return true; + }, + }; + + const lights = { + update: (name, config) => { + if (!hasFn(kernel?.lights, 'update')) { + console.warn('[3D] lights.update not available in current SDK version'); + return false; + } + kernel.lights.update(name, config); + return true; + }, + }; + + const door = { + toggle: (config = {}) => { + if (!hasFn(kernel?.door, 'toggle')) { + console.warn('[3D] door.toggle not available in current SDK version'); + return false; + } + kernel.door.toggle(config); + return true; + }, + }; + + const clipping = { + setY: (height, keepBelow = true, meshNames = []) => { + if (!hasFn(kernel?.clipping, 'setY')) { + console.warn('[3D] clipping.setY not available in current SDK version'); + return false; + } + kernel.clipping.setY(height, keepBelow, meshNames); + return true; + }, + }; + + return { + init: initSDK, + loadModel, + clearModel, + showEmpty, + getModelUrl, + getSDKCapability, + isInitialized: () => sdkInitialized, + getCurrentModelId: () => currentModelId, + + hotspot, + material, + camera, + lights, + door, + clipping, + }; +})(); + +(function () { + const tryInit = () => { + if (document.querySelector('.customization-3d-wrapper')) { + window.Customization3DViewer.init(); + } + }; + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', () => setTimeout(tryInit, 300)); + } else { + setTimeout(tryInit, 300); + } +})(); diff --git a/test/demo.html b/test/demo.html new file mode 100644 index 0000000..9d4af5c --- /dev/null +++ b/test/demo.html @@ -0,0 +1,224 @@ + + + + + + + 3D Viewer Demo + + + + +
+

3D Viewer Demo

+ +
+
+ +
+ + +
+ +
+
+
+
+ +
+
+
+
0%
+
+
+ +
+ 暂无模型,请加载一个 3D 模型 +
+
+
+ + + + + + + + + + + + + + + diff --git a/设计 b/设计 new file mode 100644 index 0000000..f8fb782 --- /dev/null +++ b/设计 @@ -0,0 +1,3 @@ +1.右侧添加选装选配的ui,分类折叠,棚子尺寸棚子/类型/百叶/配色 ,每个折叠下面都有四个属性 ,百叶是多选,其他的都是单选 +2.页面布局也改下,分画布和UI两部分 +3.UI的事件预留好 \ No newline at end of file