From 46889d387b18f0aabe89e218fd6f2b88c042af63 Mon Sep 17 00:00:00 2001 From: Ben Brennan <21160271+Aitolda@users.noreply.github.com> Date: Sun, 3 Mar 2024 13:01:54 -0600 Subject: [PATCH 1/4] Update README.md -removed "Correct Scale" instructions -added "Preview Lightmap" instructions -added warning about .gltf file exports --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b5635ca..45cd629 100644 --- a/README.md +++ b/README.md @@ -31,9 +31,9 @@ You'll need: 2. Install the `UnityToVircadia` Blender plugin by going to "Edit/Preferences," select the "Add-on" tab and press the "Install" button. Select the `UnityToVircadia.zip` file and Press "Install Add-on". Press the check checkbox to enable the plugin. This will create a `UnityToVircadia` tab on the N panel. 3. Open the `UnityToVircadia` tab on the N Panel 4. Select "Import glTF 2.0" and Import the `.glb` file you exported from Unity -5. Press "Correct Scale" Button" -6. Press "Import Lightmap Info" and a dialog will open. Select the "LightmapInfo.txt" file from the folder we created earlier. This will generate a mesh container for the lightmaps called "vircadia_lightmapData." \* Note: At the moment you will not see these lightmaps until export. container will be removed automatically in Vircadia-web -7. Press "Adjust Shaders" to correct material properties and repeats. +5. Press "Import Lightmap Info" and a dialog will open. Select the "LightmapInfo.txt" file from the folder we created earlier. This will generate a mesh container for the lightmaps called "vircadia_lightmapData." \* Note: At the moment you will not see these lightmaps until export. container will be removed automatically in Vircadia-web +6. Press "Adjust Shaders" to correct material properties and repeats. +7. Press "Preview Lightmaps" to preview lightmaps. You can then "Clear Lightmaps" to revert to your previous state if you choose. 8. Press the "Export glTF 2.0 button to export your model. Set your format to `glTF Binary (.glb)`. From within the export dialog, open the "include" tab and be sure "Custom Properties" is selected. We recommend setting your Material Image format to `Webp` and checking "Create Webp". Compression can be used as well to lower file size, but minor artifacts may appear. Export `glTF 2.0`. You are now ready to upload your `.glb` file to the public folder. An S3 bucket is recommended. Amazon (AWS), Digital Ocean, Linode, and more all offer S3 compatible storage. @@ -41,3 +41,4 @@ You are now ready to upload your `.glb` file to the public folder. An S3 bucket ## Notes - Use URP shaders with a "Metallic" workflow. Specular is not recommended and may cause visual inconsistencies. +- At the moment ".gltf" export (separate .bin and textures) from unity's glTFast plugin will not import properly into blender, so be sure to use ".glb" From a2037ba20db0f9fd2ec12957e1ada2bc57864279 Mon Sep 17 00:00:00 2001 From: Ben Brennan <21160271+Aitolda@users.noreply.github.com> Date: Sun, 3 Mar 2024 13:08:36 -0600 Subject: [PATCH 2/4] Create UnityToVircadia_BlenderAddon_v1.0.1.zip Added Updated UnityToVircadia Blender Plugin --- dist/UnityToVircadia_BlenderAddon_v1.0.1.zip | Bin 0 -> 5702 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 dist/UnityToVircadia_BlenderAddon_v1.0.1.zip diff --git a/dist/UnityToVircadia_BlenderAddon_v1.0.1.zip b/dist/UnityToVircadia_BlenderAddon_v1.0.1.zip new file mode 100644 index 0000000000000000000000000000000000000000..4dc700a228baec50ef82e58619bc66142c2b45fb GIT binary patch literal 5702 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 literal 0 HcmV?d00001 From a6ba4005de04c09b8b5a9722e730ead177fb850a Mon Sep 17 00:00:00 2001 From: Ben Brennan <21160271+Aitolda@users.noreply.github.com> Date: Sun, 3 Mar 2024 13:16:25 -0600 Subject: [PATCH 3/4] Updated files and Distro -added "Preview Lightmap" feature to blender plugin (previewLightmap.py) -added function to disregard lightmap sorting on meshes without an associated lightmap texture (getLightmapInformation.py) -added function check if lightmap texture is already loaded into blender instead of duplicating (getLightmapInformation.py) -added function check if lightmap material exists instead of duplicating (getLightmapInformation.py) UNITY PLUGIN -added tiling and offset export for Lightmap associated UVMap (getLightingInformation.cs) - --- blender/UnityToVircadia/__init__.py | 35 ++++++-- .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2824 bytes ...ixMappingNodesRemoveExtras.cpython-310.pyc | Bin 0 -> 1725 bytes .../getLightmapInformation.cpython-310.pyc | Bin 0 -> 5060 bytes ...eObjectsSingleUserFixScale.cpython-310.pyc | Bin 0 -> 1994 bytes .../manageLightmaps.cpython-310.pyc | Bin 0 -> 2721 bytes .../previewLightmaps.cpython-310.pyc | Bin 0 -> 2722 bytes .../fixMappingNodesRemoveExtras.py | 18 ++-- .../UnityToVircadia/getLightmapInformation.py | 75 +++++++++++++--- blender/UnityToVircadia/previewLightmaps.py | 85 ++++++++++++++++++ dist/Unity2Vircadia_v1.0.1.unitypackage | Bin 0 -> 3887 bytes unity/getLightingInformation.cs | 16 +++- 12 files changed, 196 insertions(+), 33 deletions(-) create mode 100644 blender/UnityToVircadia/__pycache__/__init__.cpython-310.pyc create mode 100644 blender/UnityToVircadia/__pycache__/fixMappingNodesRemoveExtras.cpython-310.pyc create mode 100644 blender/UnityToVircadia/__pycache__/getLightmapInformation.cpython-310.pyc create mode 100644 blender/UnityToVircadia/__pycache__/makeObjectsSingleUserFixScale.cpython-310.pyc create mode 100644 blender/UnityToVircadia/__pycache__/manageLightmaps.cpython-310.pyc create mode 100644 blender/UnityToVircadia/__pycache__/previewLightmaps.cpython-310.pyc create mode 100644 blender/UnityToVircadia/previewLightmaps.py create mode 100644 dist/Unity2Vircadia_v1.0.1.unitypackage diff --git a/blender/UnityToVircadia/__init__.py b/blender/UnityToVircadia/__init__.py index e017316..f11ca8c 100644 --- a/blender/UnityToVircadia/__init__.py +++ b/blender/UnityToVircadia/__init__.py @@ -4,6 +4,8 @@ from . import makeObjectsSingleUserFixScale from . import getLightmapInformation from . import fixMappingNodesRemoveExtras +# Assuming the combined script is saved as 'previewLightmaps.py' in the same addon directory +from . import previewLightmaps bl_info = { "name": "UnityToVircadia", @@ -11,7 +13,7 @@ "category": "Object", "description": "Tools for converting Unity assets to Vircadia", "author": "Ben Brennan, Vircadia", - "version": (1, 0, 0), + "version": (1, 0), "location": "View3D > Sidebar > UnityToVircadia Tab", } @@ -19,6 +21,17 @@ def get_script_path(script_name): addon_dir = os.path.dirname(__file__) return os.path.join(addon_dir, script_name) +class ToggleLightmapsOperator(bpy.types.Operator): + """Toggle Lightmaps""" + bl_idname = "object.toggle_lightmaps" + bl_label = "Preview Lightmaps" + bl_description = "Toggle lightmap textures on objects" + + def execute(self, context): + previewLightmaps.main(context.scene.lightmaps_applied) + context.scene.lightmaps_applied = not context.scene.lightmaps_applied + return {'FINISHED'} + class UnityToVircadiaPanel(bpy.types.Panel): bl_label = "UnityToVircadia" bl_idname = "OBJECT_PT_UnityToVircadia" @@ -29,26 +42,34 @@ class UnityToVircadiaPanel(bpy.types.Panel): def draw(self, context): layout = self.layout - # Add the new button for importing glTF 2.0 at the top layout.operator("import_scene.gltf", text="Import glTF 2.0") - - # Existing buttons - layout.operator("object.correct_scale") + # layout.operator("object.correct_scale") # TODO later layout.operator("import.lightmap_info") layout.operator("object.adjust_shaders") - layout.operator("export_scene.gltf") + + # Toggle button for applying/clearing lightmaps + if context.scene.lightmaps_applied: + layout.operator("object.toggle_lightmaps", text="Clear Lightmaps") + else: + layout.operator("object.toggle_lightmaps", text="Preview Lightmaps") + + layout.operator("export_scene.gltf", text="Export glTF 2.0") def register(): + bpy.utils.register_class(ToggleLightmapsOperator) bpy.utils.register_class(UnityToVircadiaPanel) bpy.utils.register_class(makeObjectsSingleUserFixScale.CorrectScale) bpy.utils.register_class(getLightmapInformation.GetLightmapInfo) bpy.utils.register_class(fixMappingNodesRemoveExtras.AdjustShaders) + bpy.types.Scene.lightmaps_applied = bpy.props.BoolProperty(default=False) def unregister(): + bpy.utils.unregister_class(ToggleLightmapsOperator) bpy.utils.unregister_class(UnityToVircadiaPanel) bpy.utils.unregister_class(makeObjectsSingleUserFixScale.CorrectScale) bpy.utils.unregister_class(getLightmapInformation.GetLightmapInfo) bpy.utils.unregister_class(fixMappingNodesRemoveExtras.AdjustShaders) + del bpy.types.Scene.lightmaps_applied if __name__ == "__main__": - register() + register() \ No newline at end of file diff --git a/blender/UnityToVircadia/__pycache__/__init__.cpython-310.pyc b/blender/UnityToVircadia/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bc7d7ef07d373deb927a5402010abc41e7354fa0 GIT binary patch literal 2824 zcmb_eUvtw&5Z6hvrTBkBAOuRQmX=l>>S3TW?NEk7{?T-($>2a|G@cQ%@8ZbFl6xmZ z;t5ai$~Wi(JkpnbgMN^EZC~;c$_w2+*>MQTTjkMeZ*OmJZ}+!*PRiwi2G5^={ll&n zHSKR49DZyV+=5s90fcIlM4FdRD2HjoR?F49{9YM2i~GK zouLIF&gB?gyz3#bv@K6QC}U7y7|tcCX!Iom4c#xErwtg7LL* zr`ZW21`21oEWI0cx6^(wSdX_7-Vf3+iDBmaR=D#^Fc`q9Mnajm&-%#|wz`w@K)`fu zz}b_KJ)JBTvicwn)7{PFVaPiH4FlKMH^B>zuI%eTWIpp`^v!0HM8bjHoK6xyVLXLR z9JSmDgkY&~(!`nA8J%8Yv9rWk90&2`1F@@fG^)&xE}jv{ruK$3+?>=CA83G-%yVfA3_>^zdqQNRRD)Sb_SiE$7AAoOQb?Lp0@+< zdk;qB7QEtfAWVZ=(L9|J&!D#xlYBe?2mJ6Fn7m#^?q&_KNJ0p5B9e5-sCO>gyYnY(vetdPCZ4>y7p1Ppd1g$@8#En*AV*WlnTh%;fB3 zd*MSdMIocEE=|FrEolMx(I=JGj4a}Mi|w$^Fl8UZK%m76ggZ}0pPUe<`dGgKu>>?B zYyeFK-|r`MsE}3i{ojT`G@h}1pC%npnQ2FUNHY`y8wG6^$qI0XN`Ye{4|#|Xe|VJhupTy)%l#r#tsuEDVg_(ddFkf_`r06?0Q2T#9-2~h)*Cl$S*7l>`tfSc1t zi$`*z5?9AH4R?lrfd(%j`4S15;Vuwa2K#Gzp*+=RQCu!eSX0ctECIoJ@EHhOs=?%OfDhBdcd08o>=d9u<2f z1k_8s2g<#QUsYf*8f%bgi?Xd?7^QAa8f|E_xnUYcLRRpgB4ym~L~swPI#TX(bWfI+ z6VBl#S9do@5XOsRK8^{YjB8C6<)PRRxZaNUD`LYE`JmMmk3;CYc{|f(^S%RLnqT; T{$IN=Z_XF(1sk3MG2i_M-gV9M literal 0 HcmV?d00001 diff --git a/blender/UnityToVircadia/__pycache__/fixMappingNodesRemoveExtras.cpython-310.pyc b/blender/UnityToVircadia/__pycache__/fixMappingNodesRemoveExtras.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..647ce62a37d1efaca1efb714a83ae9efd25c069e GIT binary patch literal 1725 zcmZt{O>Y}TbY^$*GeLPDXfWDY%;LsU`90T4=>uUcwcD^4r046E_ZB-!nHcRjOC zldzVM(p$M9?#U7OJ8+q6FYp(*z?<>9N)Ri(nKy6V_nY@NTUe+g_!fSD!~duu^hO`9 zegqC{0P;R83^AObK4KQLU!gu`ggLNVJBYc=dxeGQapZG z+Tu6x2Yj5mM$d}T<1-iRhQQ~HzcD^~aLxd$Gk=CnUAS?@kEH`({DX*=re5jAH%bS1 zUIW%BwVu}{zE~*TON^1RdIB;(8JeSM#_s!-|25$M^=-U1#9Oc8y-~&cv(Bf6R-@DR zcGtVzc4tS`_P4$c+PmvJTgrXT!y*&PIZQGs6_Gg)&lY<;r-Bx|xsfGsNp{!wAD_Lm zmrV|jQZ8k4n`)u{%}2e>?V!8Y?rgNXPqsFdWBAYB?SYm_LPfLvbg%h@AM>QOsA_4( zcu)w=m7`IxR-EQ=NTT$GRCdZ=DleN9`J|A_jZ(8a(TE;$MN&G_oY_kbz9w|Y6IDA9 z*(lJOlviXk#1(v$9rKp2{1NysBAN(z&qy^!G|!{-(6IHF3MvkH5fuESm)#LPDzGWI$6EP!>;Q5tu3)f-bbJdv6~W7ZdDTM6Y%o zR_h01`?!wp0Os2t1I5rR0z8`T;`a>2w;O=XCF(|6%aA|Gins%cLx8uRZhvjkw7kw) zfnpq6&1xH(X?e;I0^LwSpz1*|%Ge~) zcq0hL6Pi>vUJ$S>1afVd1Q9b0=mTn+Puv3|SG>^G6uJcBBUruwkot$>BmHs+Zdiui va>ZTEqhE#zOgVZ2Naa7xIn0|(7`Fe@tNbr#etxAhC-vXMN517hxaIr{+qc6$ literal 0 HcmV?d00001 diff --git a/blender/UnityToVircadia/__pycache__/getLightmapInformation.cpython-310.pyc b/blender/UnityToVircadia/__pycache__/getLightmapInformation.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1292c3a2335c25bc2e0a803ae693f206f8d053b5 GIT binary patch literal 5060 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 Sc^kjQl3lY6+i;lq)&Bu@oYFr4 literal 0 HcmV?d00001 diff --git a/blender/UnityToVircadia/__pycache__/makeObjectsSingleUserFixScale.cpython-310.pyc b/blender/UnityToVircadia/__pycache__/makeObjectsSingleUserFixScale.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5c499f2ce49eb161034fe057f43070a5ae05216f GIT binary patch literal 1994 zcmZuy-D@O85bvI^o!#u-<#3Txd9h!ZfBy5A_}C-l zZya3x92h)>rk;V|gwvD^2)DTXnhYp+xC_0-J>G!c=00yi@9-91g5Ldx@HX$fCcGm^ z;w6n&_Q2S-E`g61)6Fl3FO-mKI1<@N z4mXNo3r-#G=HYRi9S*-vMaG3(>E+`Lu8Z?*J~jM&?bD%(WL%VL7;>IxYWO0H%gKKJ zV=SYP$KmieJQ6##dwXzND)6dae6|;bsaS(2tQwzK?Vw^|#@Ue&1uJEkse@b|n=5UE z6yw~cExJtG)cIF-V0a6ETxjrr2+9I~cM5T@2(vE{w)%nnmct5pZ!Q8y;$DdXlr9ME zD)dn{aRQO5MH@{I0AV)HV)T!hWw=TK{lGz=I{(RKP;WVhcH`Vnpe&qQy-JR1P7jND z70^e%k8;*H2bwSnd;FxCw17Gmr$8V3l0McI`Z)dlUSMlK%_D=I_GMlgP2PulgQXh} zmFSjkM0r+%`PWrg`{vtXoEQ)k;CrB&CRKsK9 zid;a{PR4>EaWQ}jfx@7+sRyl#p}mk8yld!TK(HC~eg`EcQ*ubAh)A7ckEVb~WhM40 zk&n4G*RY>Cn0VZNkIdY2GPNr@^D4Wt4rgHO~o!asuh<^e^a>3mQnw|DbgPUF~Gyu>dj^X*n3qpJ20w58AJ80%IK8&+4g?#2?*acA(N+S7na}+AU%z@2??It-N#~gA!KA0HL z(>Oa~izC@$mwFctR0y;~9on|KfITFZ)wXvA*V3LCK*gj&5>99HECrssuSf>n%ad)_Yv$;$TSaF;Q>43hcLM1iv^QU zp{W%R0?Rp;atdYKf)Y*#F1NV@W!&Q~#L3g`&H55kd|q}gM=SNP3pEiOSi9y(gjdWz z)ECc3uj}V?`V0OMtiJYp&->5!o^5XhwZnm>9Vp2Mb)0Y1kcK!D(YO?!!9fbE4!-nd z_o|C)mrMFk?|o+C&X{g7cAWEZDnM^Db}|lAWCV;FjPX1Ir8!Dj%neU`P}6WEQuze# zxC?u^3WiV63*?w@_<)Qs^Fg!b^IdVom}nP&NJ{%Vg^*zh_~L1IU8DW=+U>6pLxqLc QC%)x-zT-Fj2M@jf0s9Nbod5s; literal 0 HcmV?d00001 diff --git a/blender/UnityToVircadia/__pycache__/manageLightmaps.cpython-310.pyc b/blender/UnityToVircadia/__pycache__/manageLightmaps.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4d404789aa3edc6a92480846be3aaebaa0975a07 GIT binary patch literal 2721 zcmai$TW=dh6o6;O>-FyX630oK3!xY&7ef^lfhvSTXp>%4NTRAqDzIFwHlAs^j=j5? zU8hO4mWopG&ND(vBqY@Tz|TNJnin4WRGyIf0(mLtti5g;TCg-{Zs#&{X7(HV#iB*v z_xE>?#jhno9%JYDk3r`ml<-p!oN(GEb;23XJS26>HJ*iO&&IpYgTTD)i3^(^F z1?|BYkYQs(cpI{DDF`k* zk<+;8I~~{CY%H{e$Azq3^}8N-BG>oQp~fe(=Nn;DxI+|9dD#|gsOU{6_dZ8waXekYhWaZ9+r8FK$zvn?EHw+E_r$BBe=opv}o z*Y=xG&qE_Me1Zv*D2_&MNY`t+L0jU&jx zqa~VARnghnsLE_W?ld?7N9Fnxp(>>YcG&i#P#I}oncYy>c+8>x*dN+6`5`F3z#ly9A%A{>t2N}$ zZ#|$^Om=8ki8Aob0)h5{I$K1JZEG>iO_3f=w6h0#Oo1oJr?=rN&xL2VwFoH0wS-Y- z%R)wRvd@rH;m2s-$^$8WN_bTOE@kD#I184Swl6>p76*FDsPL=dSdr@xC&zPf&Mx)W z#0?-@3Hl=gyCMhX^bFvP0Xmsh8S3(IE)R1iFT|!@;zf|792nKA@R2EEk0n~;z`|VX z6pqA3e9sMVV2Swl-J@dj%`8_ybQj-}(rq8NiH7@rNei+jfv zn1i`NB=i#kSR~_tN+(0oZKCl2+x4{_840^ zfyWETdW!&@89rV$rp&b~U)$H0FI~H`0{qaTy+FJS8_Jy96rR`(IY3QW|?&nMt5xOr_s;x?7B zyuP${{l?Nao6v*bpI;;pm1St(A6*XsFUK(?$8db2if>0XC36+N)Tk@PY;8)Of_a(H z5pkw6@KykNcI>vZ2QP{;Qyzu#P1Kx5B@NON$=9%tubG@gF@@qS6bKik_t~Jb2@#aF zfsc@#B>Q!oFLH6m>9!+#$7y$kd;`aFem6p_NjyhcMR68HEid1Jsy>>oA2V*_%UCZQ zAF7`k_68eFKqTKqM|g(v19X!=My+}Q;AkVbkgF2;BWoyLd_vUJE6*G^6MhMzKqo1q z1}g!(7@cGqNQ)uK7%e5e67-FyX630oK3!xY&7ef^lfhvSTXp>%4NTRAqDzIFwHlC@wj=j5? zUAsxOmWopG&ND(vBqY@Tz|TNJnin4WRGyIf0(mLttS?PN3zp{0?ObNg%zk4(pSKA7 z{{HT<__aXDW9%ING3Z=`5`GGT6HZ&CN;u=Ghonlm#?w$UuJa7kDWP#=o5@*`;^sc3 zpuL`yiuDAn$yy!d@P}~?D9cd7zd%H!Nt^64x!viJm^4$+@_RI(_*b@@YD=xnsRy6wzvi(*Gy1hfiYG3 z%BsEU?ml8l^PIL&Rv0-l3h%kmT^M8Y=V9FE;t`RU@}pq+v)X1TWLVo0-j=Lg3WCc{ zOx z>(l}%x~{ml;x_I^Z6^rlgFR&}wA?VN`|V)S#695#=g9qY^_Fm?-5RLcZ6^}abz0&4 zLd&m1y$Fq=;SqKNQprqSq3C)^VX^p zNDUokP+(g6B8#mYh|}1}gZN*ES#Y=^cCWXchWKxvQ$wHkOE*PV$OzUy+;jOTTlT%O zztt4=sI2IGWn87UAa@!Zful10iBJ`W26ou;qfi;czA`(Zu<@KjWnyJVQV5mqkLa!! zbU@v7L&&$cEx1Z!9jfdd>9_6BuWyS;r5Y$aaZl+|wEZsF2axMX;&rT8Dh10(LMG8w z3W8V7w!1rsYYdyJ;7hmRdQQtu0xNARs6)F5u};gM0hRssBx*IMde+F&O1#0E(8jYyniIqEV^NGj6pYUX;KjY; z3e3UWAQF0urujI;DF8f6uy?E{1`xe4fav6!8t)D$G-ApV{ObSp2`6_4Cc-lyzC8w4 zPT=(dwB8~>XNIp=g(-96%GdVw)l1i|tN}l?XfF^i!-g^!8p0F1fn0nKeIs7j1H>GV za`{SDd;N>`m3ue+bV3AW zZQ(0qC&_*t=kr|LaXPKY?mDfGkZ<5v#_vRkHHqga%P7u*sAT0kP*ul=>&J}S_%v2? z$A_w?M!mrX6A;OF(Gi}Z`~cl#k5Q|d1320UF6632{>Tc77oQL{^U5>F&4gcq$kA!a zsKE-rE=H%B2GU|kGDZtYuK>Lwv~_AEQU{*RF=X5{on&)t4tnf&?Wz16+`Vwg@tMT3 z3?;;D$MDicWFH3c4@X3YtqNVMu!M|>lM1b7oFHhqf}h-x)^=QP4gKjLG+3s^(I!ip9!b3{|9t?d2PIjyk~Z#LYu>f7B@zGu5Cj3xy#ceB zX^c8OV{G+0eT#NYQy+J%?eX@A4)v{#k8ir(*GHof{N=6iH~rk{4@MpMZ_w{==$-Cx z)ZZY3jTN*wjA*a{6nvd+sr+devPheTkY@ycELI6fN=Zmt-tw!{EL zFB%LAa5loDeFZKLc}&FI-$b?pjL=Se<{l)kUFN9D{<-IcjEHBPwAT!wD{Z3if34jd zzHJfpzCfZKhA(5sISHOm{b;7K0$j7|qdc}fw?@5q+ z#8EH63l_&1?Z9@;`@eje?l9cFEQjIdlytHW{&93QOaH5l;-sFrn5k zYMc`_9iAbCK{@iOVpIU6%plX`gA70m&uPHSv`+@F3RBkC4ANuZ7-(#Z7@iy1Zj3gf zG6W_pWKXDT0%pESrzu8IsfZ+Y<@GB9^q4TO`FQWAqcqV?!{djx54frAhN=RF=>i5* zClM5RW%~?8tE4NaJh^HUs-W$eruvPN@$SJ@ikjoRet-wnFrij{E1smCF3)Wcfh{KK zQ<%4B;WYC_Gly4u5g0t58#2QS0?-Q>?tTx$a<1irtFoz5f^t$$1+6av>Ys;OX90CX zpoqEAejIsm^u`5arjY;sBe#Wc1mhDnH)J)mGB#LE0u5hD3q-ob(d{+>e9EE&$D@&| z{Q0XF{B1ej<*{cnu*4m)8leL+`xqiw4(t;*19=(;7Bvu>UVwJu(|_W`)GkxAeIaHr zvGoeKlkf!$CUqy!6>xw`ARF2wofpB0$#ZFwgg%0{D5tBcfRY7o@CdgNu5Pzokx2JV zRwXd@XNo}|a_Tc9c4#0^lU$|@h)^qS+_>h$IfJlM9552V_H_ZlqxAb@g8G)iJ_%kp zUKl1Xvq`pg8?3vZY4|GeVEc?_WsPf*Z@^m1^_f2#~FM~eE?jVW^1?EssXZW%U--_GI?Lx;5j^)Akqiu z$UF#vQx9+}v0iqky#1y2@8x-tA-75q`}-7Ck~S&wVd;Bd!hAeZI;O<)xQz z5Wv)bVmkn8r<_d&cjh$ZHg2Inap;Di)2c4{SL9fN9VTAxP8mo3>e>mGGjA^l=uBtorky{}dSqi1hhNx(B!5nAL#3py<9eI~5ICL*W8bWPJ`yMwm zN(|h8Cv?h0iiy2-o-4NtLg=HH-hn+dqhTJgQ|1vYj0FO%Ovo$A|Mo`Z{BLI+|6ffj=6|<*Ibg0C>xA%^-mEU$ z?m*eqs0$SzPX{f?>_(A9qNPB{~PLEp8xIi zdTaZ?iuQ@}zj)?umJ=>?f#}db)jaW$Jvoo2)IW4BI7m+>QmWVw>ii0ZwlOTzfPfzTmzcnsmcbSI|2DTSrFsRGvGm( zDS(h_DKrWS!XMzv1xVlN@3Swk7QLXv=88t=S@#!!&BkPv7l?3Ng(wcIN<1Bho)brD z3Lhzzo~UJvRX7)r@`0GUv|=+tkSdHVhpLPP^z=LJJ5bkC5Q=er;`0djndfKYPF!a; zC)%d{dJZQ~6;M1Oq4wN0!(VM6QPJ3kfXDQTPtQ$wiqzI5;E`}KJu!LPmFCePbD1FYO&yec-0CWOD0TejA zjHhE390cAJ5oVYdWz+80tgwv6U)W6LXj(TzF@?HD_&2&_$hQvNU>W_CS~3k!(a zX>1rUnEZ&uX|HGyGF7~JOC2a{Av@&z&Ta!syV!zPHm*7O6yD`&Y>P6avDmtcj|=+- z;>rtmaP7%Y(2&&D?#LZeFCbU*$cwNBrVKH)>Ck&&W=4!(l955c)e@j8&Ug0vqGFcz z`)79OJ9GvLKS3pU3fq)|9u)Abvc-R+KsS^&zP!pxg(g{*lgO?T^~xp>N#}a&iqGV_ z1!GkUlgBNaY>DX!yI5Y{8B8Y?KDQY6AA=G#Fo>=a})+sb4?tq!qD0k zmw`g33diJM9xp)it^oc0d>_bZ?7PW$=eugl7@F*Af~B?KlIpI9*_N045Hhieds8aN zdFfrEnz|9rjr%%qZm^*W#k+KQI)5RhXSRdmeoH8<>Wv1%Zvx@>dI+;65Ja~{H2m8P z!U7sD=bFH|5=PH7O*l6&gF>lHJ7|6;sKdJ4+9}XWI8CtU-9XD=SiO#wXm8b;)VxY% zIa_41c~Oj+Q=ZXCsP8*AFJG?WtV*lS9X$(XFd^;&6-`r{fJ2^&X#VI{0}&VJk{?hB z2UK8x4VJrMDFkCY!{)U#Ia-2;g}nB{f`XGK{4GI8Mc@-^az?yOIa75uRi(H={6NUK zLTn~_hhl}d?8{bM>^(r6R%n^9c%Uh*6_KuilNxzgK-$Ew zkUbQElNWR|41qQ9$d?r8TXJc>?CmEd`8D-nsK0r6SV~Z4OshVwh`z`kE_Pn%4nKor z7T$I!c)&zN7Qva#pWFESoQ7n~m`g&MR1218qv4>FUzEDiv?9O^j!<`;YsnS7-uQg2 zS^R(H^&k3RxQ_p?qAjTZSf(25`j0Q5Efexe>OThM{BLjAS=WE8q?PJF(%cj5^iu9= zT?q2UHfubx`n_J?(EIR$8>OUG(b{w8GtM$l=4e>s9qu&I;js#AQ`A~l2I1Sb;s;t1F*{D6& zOvfaL;{41jg+JdwxkTyiKOF0TR%*gEUtT?dgZT?QEP9Y_CKJ3pch1sV^yov~q->+| zTLY*38h#2c5@$*>l^Kv_^C8X=-pP*;+#~=nhs#{Tc`zVvwPN9Mf!ox1)B=>IuqenO z@`u7Tnj2|NULuUFdL>WJCYbRp49`I&6$d_N-V?4B+9_C{D5)_>d@+83l)shh4*)8J zeIT!dljAt&|HwhE73jdt|FMI7BwS-XKV|vg*tP$OOZ8IaP6_f#1%!BAm_DqO!uJKg zWKg+dS7H2-M@{}@k2C&JI^u~cqbMua7_0}}&EFF-KLC0drUR2_+3>oW7SRnP6~)Ms z9N3RUNj@r&8HX5SMAGj?P(`66H(Re{vaiYao}dIM;m&Qe}xOl%kD+AgV7yGk=oa~Zc3MN9!c z6G}oK?z(gOLG?^J=2o+mmtDm9Gt5~hgysB*L#`iJGQsKfTogvb8?FU}$*Ahx)q2yN z#S4p lightmapIndex) { LightmapData lightmapData = LightmapSettings.lightmaps[lightmapIndex]; string lightmapPath = AssetDatabase.GetAssetPath(lightmapData.lightmapColor); sb.AppendLine("Lightmap Texture: " + lightmapData.lightmapColor.name + Path.GetExtension(lightmapPath)); - + + // Now printing each on its own line + sb.AppendLine("Tiling X: " + lightmapScaleOffset.x); + sb.AppendLine("Tiling Y: " + lightmapScaleOffset.y); + sb.AppendLine("Offset X: " + lightmapScaleOffset.z); + sb.AppendLine("Offset Y: " + lightmapScaleOffset.w); + if (lightmapData.lightmapDir != null) { string dirLightmapPath = AssetDatabase.GetAssetPath(lightmapData.lightmapDir); @@ -98,14 +106,14 @@ private static void LightmapIndexInfo(Renderer renderer, StringBuilder sb) if (reflectionProbeTextures.TryGetValue(lightmapIndex, out string reflectionProbeTexture)) { - sb.AppendLine($"Reflection Probe Texture: {reflectionProbeTexture}"); + sb.AppendLine("Reflection Probe Texture: " + reflectionProbeTexture); } else { sb.AppendLine("No associated reflection probe texture found."); } - sb.AppendLine($"Path: {GetAbsolutePath(texturesFolderPath)}"); + sb.AppendLine("Path: " + GetAbsolutePath(texturesFolderPath)); } else { @@ -128,4 +136,4 @@ private static void WriteToFile(string content, string folderPath) Debug.Log("Lightmap info saved to: " + filePath); } -} +} \ No newline at end of file From 8aa5ecdc6f5f9b772ac1d73ddc8a39fcc471a3cb Mon Sep 17 00:00:00 2001 From: Ben Brennan <21160271+Aitolda@users.noreply.github.com> Date: Sun, 3 Mar 2024 13:28:24 -0600 Subject: [PATCH 4/4] Update README.md Updated plugin links --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 45cd629..78e2494 100644 --- a/README.md +++ b/README.md @@ -9,11 +9,11 @@ You'll need: - Unity 2021.3.4.f1 - gltfast package (by name, `com.unity.cloud.gltfast`) - - Unity2Vircadia package [**(this repo)**](https://github.com/vircadia/unity-to-vircadia-pipeline/blob/master/dist/Unity2Vircadia_v1.0.0.unitypackage) + - Unity2Vircadia package [**(this repo)**](https://github.com/vircadia/unity-to-vircadia-pipeline/blob/master/dist/Unity2Vircadia_v1.0.1.unitypackage) - Blender 4.0.2 or newer - - UnityToVircadia Blender addon [**(this repo)**](https://github.com/vircadia/unity-to-vircadia-pipeline/blob/master/dist/UnityToVircadia_BlenderAddon_v1.0.0.zip) + - UnityToVircadia Blender addon [**(this repo)**](https://github.com/vircadia/unity-to-vircadia-pipeline/blob/master/dist/UnityToVircadia_BlenderAddon_v1.0.1.zip) ### Step 1. Unity