浏览代码

re-adding the Sorter environment

/bullet-hell-barracuda-test-1.3.1
vincentpierre 4 年前
当前提交
bd3cbf95
共有 26 个文件被更改,包括 3363 次插入144 次删除
  1. 2
      Project/Assets/ML-Agents/Examples/Sorter/Scripts/NumberTile.cs.meta
  2. 8
      Project/Assets/ML-Agents/Examples/Sorter.meta
  3. 8
      Project/Assets/ML-Agents/Examples/Sorter/Meshes.meta
  4. 63
      Project/Assets/ML-Agents/Examples/Sorter/Meshes/ArenaWalls.fbx
  5. 247
      Project/Assets/ML-Agents/Examples/Sorter/Meshes/ArenaWalls.fbx.meta
  6. 8
      Project/Assets/ML-Agents/Examples/Sorter/Prefabs.meta
  7. 1001
      Project/Assets/ML-Agents/Examples/Sorter/Prefabs/Area.prefab
  8. 7
      Project/Assets/ML-Agents/Examples/Sorter/Prefabs/Area.prefab.meta
  9. 8
      Project/Assets/ML-Agents/Examples/Sorter/Scenes.meta
  10. 653
      Project/Assets/ML-Agents/Examples/Sorter/Scenes/Sorter.unity
  11. 9
      Project/Assets/ML-Agents/Examples/Sorter/Scenes/Sorter.unity.meta
  12. 8
      Project/Assets/ML-Agents/Examples/Sorter/Scripts.meta
  13. 36
      Project/Assets/ML-Agents/Examples/Sorter/Scripts/NumberTile.cs
  14. 271
      Project/Assets/ML-Agents/Examples/Sorter/Scripts/SorterAgent.cs
  15. 11
      Project/Assets/ML-Agents/Examples/Sorter/Scripts/SorterAgent.cs.meta
  16. 8
      Project/Assets/ML-Agents/Examples/Sorter/TFModels.meta
  17. 1001
      Project/Assets/ML-Agents/Examples/Sorter/TFModels/Sorter.onnx
  18. 15
      Project/Assets/ML-Agents/Examples/Sorter/TFModels/Sorter.onnx.meta
  19. 143
      Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/CollisionCallbacks.cs
  20. 0
      /Project/Assets/ML-Agents/Examples/Sorter/Scripts/NumberTile.cs.meta

2
Project/Assets/ML-Agents/Examples/Sorter/Scripts/NumberTile.cs.meta


fileFormatVersion: 2
guid: d395cc1183d7f4911902a2393004c5d9
guid: 03b2e6d9493cc4a92acf7f3b8b438aa4
MonoImporter:
externalObjects: {}
serializedVersion: 2

8
Project/Assets/ML-Agents/Examples/Sorter.meta


fileFormatVersion: 2
guid: 5921b34611f764a849f03ecb648faaed
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Project/Assets/ML-Agents/Examples/Sorter/Meshes.meta


fileFormatVersion: 2
guid: 21f2df9a3b371479883c5f6a9c1f5314
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

63
Project/Assets/ML-Agents/Examples/Sorter/Meshes/ArenaWalls.fbx


Kaydara FBX Binary �MFBXHeaderExtension\FBXHeaderVersionI�x
FBXVersionI��EncryptionTypeI�CreationTimeStamp�VersionI��YearI��MonthIDayI'HourI ?MinuteIWSecondI t MillisecondI5�.CreatorS)Blender (stable FBX IO) - 2.91.0 - 4.21.3@' SceneInfoSGlobalInfoSceneInfoSUserData TypeSUserData7VersionIdMetaDataeVersionId|TitleS�SubjectS�AuthorS�KeywordsS�RevisionS�CommentS3 Properties70g9PS DocumentUrlSKStringSUrlSS /foobar.fbx�<PSSrcDocumentUrlSKStringSUrlSS /foobar.fbx�$PSOriginalSCompoundSS=LPSOriginal|ApplicationVendorSKStringSSSBlender Foundation�OPSOriginal|ApplicationNameSKStringSSSBlender (stable FBX IO)�APSOriginal|ApplicationVersionSKStringSSS2.91.0DMPSOriginal|DateTime_GMTSDateTimeSSS01/01/1970 00:00:00.000�<PSOriginal|FileNameSKStringSSS /foobar.fbx�%PS LastSavedSCompoundSSMPSLastSaved|ApplicationVendorSKStringSSSBlender FoundationzPPSLastSaved|ApplicationNameSKStringSSSBlender (stable FBX IO)�BPSLastSaved|ApplicationVersionSKStringSSS2.91.0&NPSLastSaved|DateTime_GMTSDateTimeSSS01/01/1970 00:00:00.000uFileIdR(�*��$�¿Ȱ*�+��� CreationTimeS1970-01-01 10:00:00:000�.CreatorS)Blender (stable FBX IO) - 2.91.0 - 4.21.3j GlobalSettings VersionI�] Properties70p)PSUpAxisSintSIntegerSI�-PS
UpAxisSignSintSIntegerSI�,PS FrontAxisSintSIntegerSI# 0PS FrontAxisSignSintSIntegerSI] ,PS CoordAxisSintSIntegerSI� 0PS CoordAxisSignSintSIntegerSI� 1PSOriginalUpAxisSintSIntegerSI����
5PSOriginalUpAxisSignSintSIntegerSIc
8PSUnitScaleFactorSdoubleSNumberSD�?�
@PSOriginalUnitScaleFactorSdoubleSNumberSD�? HPS AmbientColorSColorRGBSColorSDDDV APS DefaultCameraSKStringSSSProducer Perspective� %PSTimeModeSenumSSI � 3PS TimeSpanStartSKTimeSTimeSL
2PS TimeSpanStopSKTimeSTimeSL����
P 8PSCustomFrameRateSdoubleSNumberSD8@� Documents� CountI� DocumentL���SSceneSScened Properties70 &PS SourceObjectSobjectSSW 3PSActiveAnimStackNameSKStringSSS�  RootNodeL�
ReferencesL$ Definitions� VersionIdCountIV
ObjectTypeSGlobalSettingsICountI�
ObjectTypeSGeometry�CountI� PropertyTemplateSFbxMesh� Properties70"APSColorSColorRGBSColorSD�������?D�������?D�������?tDPSBBoxMinSVector3DSVectorSDDD�DPSBBoxMaxSVector3DSVectorSDDD/PSPrimary VisibilitySboolSSI;*PS Casts ShadowsSboolSSIu,PSReceive ShadowsSboolSSI?$
ObjectTypeSModel�CountI2$ PropertyTemplateSFbxNode%$ Properties70V2PSQuaternionInterpolateSenumSSI�KPSRotationOffsetSVector3DSVectorSDDDJPS RotationPivotSVector3DSVectorSDDD_JPS ScalingOffsetSVector3DSVectorSDDD�IPS ScalingPivotSVector3DSVectorSDDD�.PSTranslationActiveSboolSSIKKPSTranslationMinSVector3DSVectorSDDD�KPSTranslationMaxSVector3DSVectorSDDD�,PSTranslationMinXSboolSSI,PSTranslationMinYSboolSSIR,PSTranslationMinZSboolSSI�,PSTranslationMaxXSboolSSI�,PSTranslationMaxYSboolSSI,PSTranslationMaxZSboolSSI8*PS RotationOrderSenumSSI|6PSRotationSpaceForLimitOnlySboolSSI�;PSRotationStiffnessXSdoubleSNumberSD;PSRotationStiffnessYSdoubleSNumberSDW;PSRotationStiffnessZSdoubleSNumberSD�0PSAxisLenSdoubleSNumberSD$@�HPS PreRotationSVector3DSVectorSDDDBIPS PostRotationSVector3DSVectorSDDD{+PSRotationActiveSboolSSI�HPS RotationMinSVector3DSVectorSDDD'HPS RotationMaxSVector3DSVectorSDDD^)PS RotationMinXSboolSSI�)PS RotationMinYSboolSSI�)PS RotationMinZSboolSSI)PS RotationMaxXSboolSSI:)PS RotationMaxYSboolSSIq)PS RotationMaxZSboolSSI�(PS InheritTypeSenumSSI�*PS ScalingActiveSboolSSI4GPS
ScalingMinSVector3DSVectorSDDD�GPS
ScalingMaxSVector3DSVectorSD�?D�?D�?�(PS ScalingMinXSboolSSI�(PS ScalingMinYSboolSSI+(PS ScalingMinZSboolSSIa(PS ScalingMaxXSboolSSI�(PS ScalingMaxYSboolSSI�(PS ScalingMaxZSboolSSI,QPSGeometricTranslationSVector3DSVectorSDDD�NPSGeometricRotationSVector3DSVectorSDDD�MPSGeometricScalingSVector3DSVectorSD�?D�?D�?'6PS MinDampRangeXSdoubleSNumberSDk6PS MinDampRangeYSdoubleSNumberSD�6PS MinDampRangeZSdoubleSNumberSD�6PS MaxDampRangeXSdoubleSNumberSD76PS MaxDampRangeYSdoubleSNumberSD{6PS MaxDampRangeZSdoubleSNumberSD�9PSMinDampStrengthXSdoubleSNumberSD 9PSMinDampStrengthYSdoubleSNumberSDP9PSMinDampStrengthZSdoubleSNumberSD�9PSMaxDampStrengthXSdoubleSNumberSD�9PSMaxDampStrengthYSdoubleSNumberSD% 9PSMaxDampStrengthZSdoubleSNumberSDj 7PSPreferedAngleXSdoubleSNumberSD� 7PSPreferedAngleYSdoubleSNumberSD� 7PSPreferedAngleZSdoubleSNumberSD*!(PSLookAtPropertySobjectSSb!*PSUpVectorPropertySobjectSS�!!PSShowSboolSSI�!8PSNegativePercentShapeSupportSboolSSI"8PSDefaultAttributeIndexSintSIntegerSI����N"#PSFreezeSboolSSI"#PSLODBoxSboolSSI�"NPSLcl TranslationSLcl TranslationSSADDD1#HPS Lcl RotationS Lcl RotationSSADDD�#FPS Lcl ScalingS Lcl ScalingSSAD�?D�?D�?�#2PS
VisibilityS
VisibilitySSAD�?$EPSVisibility InheritanceSVisibility InheritanceSSI��Objects��0GeometryL툒SCircleArena.001GeometrySMesh�$ Properties70�$GeometryVersionI| 6 Verticesd��xe�Y��E�ǀ���Q�NA$�P� KZBK
�J���-
XT
t4B�E}4�QY]"�,A��(>#*�J� nO�4g�����ϧ�����ܹg���8���˟�ҵ���:���������S�G�����v�O+V�x:����v����:l�����SG�~ψg���n�z�m��͆��G/ʼnW�������s����~���]lqp.xd�ݣϞ����|���=���x{�[�O9��/���Wz�OF<]�V��A8���=�� ��8��_^1�y�n�+w�%#�޽v)�������=2�������X��<h���pZ���'����#N�w��]N�w}��>8U�՛���OV~����Y8~���Up�N�W���!w�ի~��N�d��:p��/�|�W��y�8�v~A�Nx��)�/�'���ɫ_�I_�~
�_p�����%���W����n���1�z����c'�c���7-�V��~���>�/�s���B�ɋ����_̧�|�����V�_����� ��_�x��S/�cϞ�q&�Tg�����>ч��F|�j���|Ni�3��Ӭ���#��s>f�ھ~��s�##�ħ�������F�WǁO���z�.�+��,.>Q�����O>�����OI��-�o���O��q����> '�����}<�WpZ�z��O�'\u��#.>�������� ��d�|�ܯ��]'�O�:?�ĈW��|–G,.>����Գ:N�f>�o�(>���s󈇕����K�֟��/�88��������#���ͻG��|���Q���O����$�G����8��%��q�ɪOi�qpT'>��u^N|�.9��8����I��(>�㟰�)�����?Q|'���ًO��[��S{����Z?'� ����U�'p���/'>q��o� �r��=�OE}��1�G�i�\h��'p�'��)���s��)�8��W��L���>�|���}���=c�aR����~*ꗙ��v?g� 8���OI� NQӿ�D�wT���y/�'p������k���O���|fģ����� ��O�{��'p�r�� ������>Q�O)����:����^����0�_�������ʏۼ��+/�y���ki?�j�h�W�S�����?c�� �������8i��ץ�c=ξ�q6/�6��xg_͋m���}�i;��D>�4��[�O�9�y�!{�8���������6/���h��(�͋n��i��Pͫ;�O�b����'��v������}�v��x���i�\m�|z���|�Z�����'���6p��������y��|Z?�xݽ�������l{/<�`���/��" '�������"}�����]g����_6�7���9��/qH�����~��[F<}n��kq�q#6��_�q�U����e��'�xˆw/=j��� '��m���G�迗�>u���'�q'�t��V�?���|�wo���eC���|c�c8?�xվʋ��=�uNy��#��lX�4���w�o�nת�W��c��|��'w���w�\���|>����]/�h���~�Ԉ���F����x�����������.�#�ye}���7��W�w���|�_���O�a�%�>�T������zE���z�7Y=�I�Y�������|8���K:�����������i맠~'?i��/��?Y?e��z��ĉg��ĉ����'���:�t��_��O��>������[=�z����c}Q>^�����'��]p͈{����1[,�P�+:N\�O�ՙ#�S[}�z�D}��L-�W�,�p^��WǁO�+oݰ�dz��}���F���W8ۈ��~�Z��㤅~v�_4���:��׍x�ؗ��-�;N���_RG<�OUu���g����{N�8N|'����O��X|��I���8E|�8�]5��i������|��X� �e�}�t��� ��������:>|"��#�'�q߻�����ɛ�8�$���Nm|��I|�8'7�~��|Ҿ�� ٝ{z�}��� ��ec=�N:ۈ����p�Oj��8���Y>N|"��|��ľ�r������|'�>^|'뼂�ľ�� >�����W����Y�x��;����>�g�����^�Q?���K�S�� >����sn��^8_�� >��l��'�?o��������Z~^�_�/��ħ�|�)��">e��mv�DՃ:����)���7����D��u�|�'o�}��g�݇A��y�]v?'�E�J���9�_�����ϕ�U>Y�Կ�������8�o�D>9ᙇ\��'p�:�Q|�8'�2��{�<��t!�t���/�S������:�k�}羡��)͋����f�{m���>�ټ�u^s_�m^�:/�UOּ��a_�B��<���t͋��:��I�O{��z����y1��k)Ni�\ں>��xg�͋ᆽ���b�a����}�Km^���ؗ��͋厽�/�y5}lo��?ؼO��I>��=ϺQ|R�v���)���9o�s� >��޽��4���6�����^l�|8��4���þ>]�yG�t��x������|����;ʧ�����~/b�[����^pot�6�T�gY:˿��CB����tY���������W�v��=>��t��T�5w�˒��e��p��d�N鬠�SgI�U��.K�_^8Si�`_�,tYΜ#�����Ks����e���������]Μ#�o�a^ ��W�7�,k_�2��5���R�Ag��f>̑�_�ü��g�,�2p�e�/p���v���B��]�y�Et8̅�2p�#�_࠿�5G: ]��e�8��V��K���B�QtY��X�k1t�,� �2��������:������H��0/�'p�Y���L]�p^̋�,p�Y�O�]��b_S-�3: >Qgt|b_�/t�d�B�2��.C���Bg���
�8�2�4q4/��&s�t8�2�4qx�u�y� ���x͑� �|"��D>�I�/p�_�,p�tV�.g�m�_�%��/t����9�IE� ͋�,�Ag��ȧ��� ᠿ�Y�D���2p�e��}���YA�Bg��*��y�'p�_�,�)�t��G��JM�/t���� ���)�E诉#���'Jg��&�L� �����࠳�eY�A����7�_謨:O�����A���"s���<�P:+q>�g�2�y�QU���}}�b_�,t�A����� �N��Կ����_�%�: >M�2��đ�r�Y࠳��đ.C�������}�Ugt� ���Bg�����e3t��k�#���g�,��L����<8Η�AIg���
�e� ]��r�H���Ag�����e�_� �����.]��'����&�t��}���_���_�Y�x�,t�T�2��x�/t8�o�� ]F>�2��t����Y��Y� ]V��˼������ �-��Q~�|�Ρ���tk��oP~Ũ��7sV�c�������X�ߕ|����0ʗH>_���3�����/
_"8���V����!8���%��/�!��?�g�(|�����8q��
���/�ɇ>*���L��|����—�D������g��/
_"8͇����Cp��3�!�Dp�%�?�!>:p���_"�Cp��3�!�Dp�%��g�����3l���8�%�?�8��3��g��ȗ�������3\��D�����p�I�>C�ľ�%�?�_E�C�ľ�|Q�O�O*�D����?�o�(_���p�%�?�8�N>q���W��
�!8������8�'�t��?l����W>� ��:�E��G����~���3$|���_"�ù/�R�v�O��_"�x�����C|�3�������/�!��?���S�3ė�D����?�gH��i�Kd_�{>��9��_�է���!�D�����p���P>Cp��K_b?�񻜻�+�O��3L�8���|�?�g>C|���K��C|���3L�8���3���8� 3>_�_"�É#�!>Cp��'���D� ��E�5p�|��'�|�Q��C|��� �%��/�!8��_p��K_"�Cp<�-�!8� �|���K��C|���3ė8q�K��8��������_"�C���� ��g�/|��g>���g�N�!>� _"8���3���zp�3ė��,�!8���/|�^�Dp�%f�����|��'�|��g��?�g>C'_�đ/�!8�(�!8� �%N���S�?�gN�[qMɗN�[��?�>��V�|������~ |�����~��:6UE*PolygonVertexIndexi x5�w��u������{��RBF)+"%$B�H�"RD��"-��Q���l��-���p��z�����_��z��������iB���[�$!��[��k��L��ۉ�w��f�ބg��mL���Ĕ03�y��J�-����lf� �lCf S���p
S���y���L|�ٌ� � ��z�F�"���qL^���r�R�5>�l:f:� �lmfS��������{v ���{653���{�����yώbr���=��i�/�=������=[�Y����gG2Yy~���]�4���M�Lfz㞭Ĭ`�r~$�d��i�{v�_�{6����-�,cp޳Ø�<?�s��e�Kq��d���qϖa~d���g�0ix~�瞝��×㞽Ό���-�,f���g3)y~�瞝���W➽Œ���-�|�4��g2�x~���������={���=[�����y��gx~��%`!f��}�5� iBBK��4��i�W�vK��xh����W�v+��x-h����ׅvk��xh����� �63�����V� ��mgJ��B�]L1�������v�������o��0�����1&�0�;�d��v��L�c�����.2i�'��&%��]g�����M&�%2�xz�%�����.~�l����H�K���G��2�g�W�vY�S��d���q�5���Q� �]�0�&�.?~�lWߋ�M�+����%ە�w����J����v��-�Gd���F��]|�9ٮ:���lW _���kW_������"� _�f|�}O�����Cz��g3my��ޟ ��Yx �gv3E��O��9L�o��L|ޚ왽L!� �c0�y���3���x�g0�ٟ�2%y����ɞ��O�ے=s���>u�?
���Ȟ��Oe��3G�;x��3���z�7����D��q&;��Cϼ�<����D���=s����L�30����g��?��ndϜa2�<+��L�a���@�DZ��Ÿ���]xwr7�<�������y?}����a
�?���^�'�k\bR�� ��1�������(����3)�o�{�}��L
��B_� �A�4�5��?��d_�<��K�5n0I�/}�����s����p�g�}�J��?�׸�$Ⅱ�� ӊ����#��s6�U����� L}�~��ߏ�d�:�o�h�]M|=�2ٮ� �lW��lW�J�+��ğ%ە���������d�"�A�)�]A�/�I�]>�o��.7~�l���l� ?�w%�e�/���v��xG�]Z�ގl�
��l����G�K�'��ْlw��or�9��_<~�����lwπ7"�]�3���vg�lx��?xN�&����F��χW&����+���E��d�}xq���O�^�l�/�!���W� ��~�+���v��jxn��z�&��l�^�F����g&���7�3��~���Ӓ�~���S��~�����v������o��$�d�m�)�~������;��^���'���{�����#O�=��;���F���3�;�]��"O��p߷f2���O"π]pߗܱ��y������};��ȟ���+��?�y6l������}�����6�|��}K|A买5�tǾ9�}�y���c�C䅰�#t��.��ȋ`|tǾ�s�%�1��c_�%�R�_ݱ���y9�������������Aw����#��5��������kaU| tǾ�{� �� �c_�#�fX�ݱ/���wCw���F�K�{�;�E�}�w�b���}A�`�=�0~�s�ɇ�y?,��������|�ŏCw�s�'"���S��l�?������}f�l��0+~�c���4̄_��ا�/G>��W�;���k�/�4� ��}r���W`J�t�> ~;�u� OH������y?J��o2 <O��c�/ϓGN�����ݱ�������7�4���x��)�U<=t���!rjx �ݱ?�g���dzBw����E���9�;�'𜑳�Sx.����x��~Nr� ݱ� �����w�;�����7�a|2_'w�����6n��|}����%en�)"�8�&�
�cO9������_��EN ���;��������xf���<K���� �c
�9<��������sCw���y"����|���x�ȹ�� t��^(r^x/�)��ŋF.��š;���� �=x)����t�bp^�c� /�$܎W���o�+F.�╡;��*����x5���:�z�Jp^�c���*\�ׁ�د��F�W���;�+��kÕx#���2�����r�.؈���;rC���c�o�1\�7������ \�������[En��Aw������������?�5������������;Bw�?�����;Cw�?���~�w������� ������?� ��?ݱ�������ؿ�?�;��? ݱ�����Nş���O��E� '��;���#���A����g"����g�;�c��"�����������1� ����#�����;�/�#"�#����� �+�����h���P���#�0|,t��Y��ȣ��u��� ���c�`|t�~�f�qp �����-<)4�g�����E���>�"��L���,����KE.w������x��%����ݱ���4܆�{�;���ʑ��-����c���"܈׀����׌\��kCw���D�����;����#ׂ�������F���xc���O�]��ex����=���?�͠;����#� �-�;� 𖑛������o��"� ��m�;�_�Dn���Bw����E�~�w����w�� ��ݱ���=� �ݱ���!�1� �c�!�h���L�;t��}��ȏ�����w�^���ὡ;�o�OF����Bw��Ÿ�������ؿ���N�Bw���E�'���;����F~����ؿ��� ���ؿ���98ݱ���y�2>�c�"�����GAw���GG_��@w����F~��Aw���_��*|ݱ��58�ݱ��O���O������D~>�O���?���-�$> �c�/�۰>�c��A�w��� ���#�����G�Y�����#���Bw��?����φ�طǿ�� ��ρ��?��s�� ݱ��&����(t��O�x���|\�|Ǵ��G^��htǾ)�8���ϗ�@w�����=������;�e��~~��c�_�'�_ ݱ�����3���������D����Bw����"�
k��;�U��������������ae|+tǾ�-�&X�ݱ/����;,����ؗ�wG����@w���{#�������B����"�!��}~�p�}� ~�c�?� ���c��;��������������Ü�i��}�L�0~�c�?���ݱO�_�|f��@w�S�W#_�~�|�c���2L�߄��'�oE������D��/���$<�����<O�?���t~�=�;������|��Ͻ�t��
�&����y�����_��G��w?�����sx��~^����c�c�������{Mw�O�9"{�}������sE�����=ݱ?����}��ރ�c/�� �/
Aw����#{��}��������E�����Mݱ߅���}��)ޣ�c�/���_�Wu�~+^>��1��x����f�Rd�o������ x����x�=�;�k������{Yw�W��#{��}S]���J�^d�jݱ_�7��}�����ݱ���W����o��������d�����q�)�KuEdgesi�hx��S0���^�NV&+����de�2Y�ޕ��de�2Y��L�k^��feoV&+���
Y��LV&+���+'WN��\9�r^j?|���s�{�g׮]���H��Q����s _$�P��KG��e�9��p"'�U�8��q
1��׉�4�����7I�L��Y$q6�&�s��r�%�������Ʌ�������%��K�������+���R�U������Sʵ��븞_R� ����_S����[��ۨ��s�;�-����8�]��&���ý��V��O�����/<����n�Q�q�FO�w��)�� O�O��Y����o����8��y�I^�L1�+�� �1����������,�ˬ�.�������|���� ���mv��$G�n bG�1�ʱG�N'p"��Dќ�)�p*��q��$�ș�Eg�L
�p.��G���d��L������br��.%��ȧ�˹�B���b��jJ��Rʸ��(�z*��n����f7s �R�R��������h�����6��~�y��!�x�nzx�Gy�^��~��Ix�A�x�g�YF�9�g�g�y�I^f�i^�Ufx�Y�x�7��MX�-�f�wXf�wy�U�g��� >b�->��)�|��$����&�c!�c9�0�'�N�D"9�(�9�S��Tb��4N'�3H �39��I���<�8� �`/�dq!������%\J��O�s�\I�\�Քp ��q-�Q��TP� �H7Q�>n��s+5�r���q�4p'�h�.�h�n{i�����v��N�!�x�nzx����q��� �d��d��y�a�e�Q��y�x�q&x����e���^e�טe��y�y�d�E��m�x�eVx��X�}�X�>d���d����O��mv8��@ AB(a�A$QDC,qē@"I$�B*i��A&Yd�C.y�S@!ESB)e�SA%UT����PK�4�Hʹ�J�t�I���K� 0�Ì0��L0���0��,��ˬ���l����f����'�`B%�p"�$�hb�%�xH$�dRH%�t2�$�lr�%�|
(��bJ(��r*���jn��Zn� u��@#M4�B+m��A']t�C/}�3� C 3�(c�3�$SL3�,s̳�"K,��*k���&[f��2�&�P�'�H��&�X��'�D�H&�T�H'�L��&�\�ȧ�B�(��R�(��J��f����:�i��&�i��6�頓.�顗>�`�!�a�1ƙ`�)��a�9�Y`�%�Ya�5��`���f�#�O AB(a�A$QDC,qē@"I$�B*i��A&Yd�C.y�S@!ESB)e�SA%UT����PK�4�Hʹ�J�t�I���K� 0�Ì0��L0���0��,��ˬ���l����f�Oo AB(a�A$QDC,qē@"I$�B*i��A&Yd�C.y�S@!ESB)e�SA%UTs5�r;u��@#M4�B+m��A']t�C/}�3� C 3�(c�3�$SL3�,s̳�"K,��*k���&[f��ȟ � !�0‰ �(��!�8�I �$�I!�4�� �,��!�<�)��"�)��2ʩ��*���~j���zh��fZh��v:褋nz襏~d�aFe�q&�d�if�e�yXd�eVXe�u6���aKY�pLayerElementNormalILVersionIe/LNameSfLMappingInformationTypeSByPolygonVertex�L ReferenceInformationTypeSDirect�p"$Normalsd$x����n[U�7�m�Y�.M�x��Rb��]w�u�v��]������Q�hDR��W�eE�MHmS+1� ��h��;ӱ�o<������|޵���1�s���Z�ѣG�����ѣGO���/�o�� �毇��G?��:��.���𫔟����
��?�����O��_;N��w��.ϣO}ϗ�N�G��[��^���?��W�y�S�<���m�~��7�Z������E]��O��s�K�/��}_�d��ї����|�o8���^���߾�c �d���M<�N��'?�?~�o�����x瑷�~�:���8<�����W{M���G���S�o�ܿ��>~�����_�����ל7�����������з��C����>�9O����ˣ}�h��N\�;^��/���W{ɷyV�:n�m���#�y��œ�������w�����M?��u�{�}�x�����.q%����9_����s�1��i����/�c|u������������z��.O�'�����,?���NY���˓���ݿ���������Ǐ��kV�/�<{�7>�y��]��iwx�g|������6�8/�K�'��ϧ�����:���ӛ/�{��]���˓�L{���1�����i���%���}�S��ex������A��:/�K�3���?�<�#�?���R�tr��4>���w^��.O�'��Oڋ����u�� �<��$?����?���������%�Y>�w}�O~�������?�7��ut;<R�tb�~��(�O{��q���\�m��� �~�����G��'q�E>y�����5�hG����K��&��W?���:��Op����4���{t£?ᡬ�;�8<��|�?���q�|����q!�K�3���_������7�]�?����_�h/~��x��o�ϴ�]�?�YG����<�?�������Q�}��?{^ ���l>%�y����_�zj��O��?���������x����~��Opڋ��G���{$?�'�n�}k�5/L����������O��7R�tb��d�C��w��8��wpy�?�ן=���^��8<��\����?^�������~��w/�_ГvY�m�~���!�}�����׭�<qۥ���g��7�8��wpy�?�џ�eۗ���qx�;�<��S��?��R�$?��u�����n��W��u�o�������C���׬�z���������)ul�������8�y���<����7��yt��e���qB����Ο�}��I���Cuw\��W~l~�,;oo|�K����贬^y��q�^�u��μO\�[���M<�߫_�G�M~�5՛xl���O�y��������ZI<}�|ǃ�z�_댩���8S���� ��H�&Ǔ�g<wǏ���3Ջ���O����7���O�7�L�������u��絎3�[��q�7�L����z�e�S��g��o����7�o�:�7�ȏ_�O�&���_����iW�S��g�wJ{Qe�G��Xp�M<��ӏ�n�����M<ƛͿ򏃪�C\�?�۞�����_��#�S���u���<S^?~�o����^]:���ă�8�z���z,�ێ���C�w~�e��]�o���v�z���G����(;~S���q���}]���z�]��zq�9~�{W��}� ��z����U���_��W�z��w���v��vM�&��ֿ��`�����~ ֛x���ۏ��;��9՛x��;�7���ZG�7�o�?�����3Ջ_&?����'��o�O��To�������m� ��|6�[��qT׭y�vw>N<Ӹ+��^ ��A���3� �����R�w��{���xc�D���i�R��g���;���]�O�&�i�)��� �7�o�����x��&���_���������k�I(��q ?��������=�ō =��w��<�7~���:�\7���t��[�ԝ\������NG���Y�ω;�x���� ����g�G��_��yI\��ΪN�a���K���q��<����:o����n/����<=\'�y�����{�[�C/�8��F����?��Ḡ�u�~N�_�ϜG;��O���w{���s;�u����<-���y.�-�����8�u=������~�q��<��Я���|N�y��o������.O��\����0�~�q\?��ܼ�r�qZ|�y���a��7��������|����>��8��Vḓ�ϧ��}M��*|�O%?�����?����@�������~__����q^����<��������Y�k�K���~�<qyz>�ߒ��<�韔���r�[�ð����a����?�^~�ގs�x�����������~�嫜����s��#|U^��yc������q��Ɏ�����?=�v\{�:��c��ƣ�7Ǎ��������������C��������}/�����>_w\{�:Oտ��ϋo�o=��������;���q]��S����~vw��?n��_mq��϶����$����Ov�vI~�<�G���ul��������G��r�Y���|M?���vI~6_�?��/�7.�vI~6Nl~��zo@�������ώ�־O�����'�{ϗ�7_�x�����S�k����Ǽ9�K[O���綞n�|.��Vj��������}�~���W��[��?�o���oZ����v��y��k��8�([�<G���?�9�]�o�n?�����g�M��W�v1o��|��U�x������?k>H��q�v{5p������r�'���x����:�oy�3|�]\W�?ǩuL�B�����u��.���wZ���Ϋ����x/����y�-�~�G��?q����r��������_��z��?S���}�;�_��u�x�y��y�c�]��?��������=���\��|���������V�?�ގ'pyn?��7��__��:R�O<��<y��_�S�;~O�v<�T���z���}�=��z;�x��Q<�������V>���x���v�����C�O<����:?��To��<������?����.�_v���:R�O<����t��z;�x����^���ގ'pyz{���O�v<��������To��<}�����u�76<��o�!��uCܸ��qd�c|�7��u����u��?���ގ'��w��v^�m�To��<�S���R�O<��8^�w��z;�x������ގ'��s��_�^�p�'��z���w�u�z�/�x�塽<����;��]O���yR��R�O<��0^�(_��To���k+O������x��zW|������P/�{~��<G��|�:�S�O<���Ν��P/����\���������x���q����ގ'py������To��G?�z��ގ'녯�K�����x�������To��<���O��z�~{�'py�x��=�[?���'��o�6��q��z;�x���������q�O<���v/~�O�v<�T�˿����)����.��T?��R�O<��8^�w��z;�x������ގ'py\g��N���;ο��p��_�y��[_����W���Ż��O��)�M�<�����s��� �:���>/^��\ەt޾����?������'��|��0��#���ϧ\U����9x��荿������?�u� Ov%����}���&����O~�����o���{&O<QgX��9����P�+�|��/�c�����B9��'=wp=u���'&���ۧoy���UNx�i�A��]v�X�����Ww�+�����E<ث�k��!n{��Yɮ�g�w���� O<I�ϩ�o?3���m�+�Y�F�;>�C�x�I:�7�w���V�yb�c�W��1��'�4ޫ�8���$���[�Ϛ��<|�'��s��Lŋ���8�]I�/���ya9�G����~v>6���Yq+��"z��t�+��_<��Īw�q��ϑ���?����3���_�O�|���z�����8=�I:�q �'��]I��Ix�I:��
�4O����|���� �4O�ٕtN�Z�o��Z���=�?yx�3�u��'��$�S^���:ip�E�7��M&�O����'< O<I����;���d�dW�3���?���v �g� �?���~f�����Z����ƒ��?���� :�w�?��� ���ɮ��|G�����7��J:�w�O�-��>|��=�3ݏϰ.qƓt�G��y�����u�3=���U:�5��I:����o^�~��~��v%��)�V�F~P��'�k�}�)�����[�������*/��N��]�{���ētү�Ѯ���{7Ѯ��q�u��3��ޤ�q����s�Ip�o�$�tܸ�t�N��*<�D�kߢ�'π߼@�ο{���'��;�S� �Kx�7�d�->�E����[���]I�@�˲�]���t�Wt�����՝�Jz��:��`��v?Y��w�m����7ɮ�g�w��W�Ox�I:�����EW��~�m�+�Y���w|���ēto��8�>�~��7�]I��^��DŽ'���x�~��������]Q����gͻ{��OԹ��;ϙ��h�:�]I�����'��Ǽ���������Λ��d׋��g�Y�+�{`o�9��x��_��|�v1Mz��O���x�~n^�u��G�+��O�!��'���5�S�<�k��?��3<�$�S\�����]I�4���ētN�Z�_�����Fɮ�g�+J��'�ٕtNy<�;[��}���<�J:�w�'� �O�i�c��N��w�O�9�+�������S����x���|G���&��N����#�����c^���3��]����Jz�w�O|,��~�� �����;�E�-��>|�q��:���~�x����7�$��;�g�����C�P�ɮ�G�O�����ho����Az�S�>g�������R=�������O����_��}Ǔ���Ÿ���S<���>�������}�������ۗut>y�;.�?K��7���m�O��{�[�zo��7C���[Kzn䍗������Z�g�O�y|g>��~iߏ���Lv%��/�zY��_�����O���_���pq�O����z����~���y�������W�Kx�I:����8���Jz��}��^��g��x�N�����[��տu�}�Q�����j��O<Ig����]���dW�so�����x�N�����oԿ�m���t>Y�F?;>�x�N�����{�;D��N����� �v]�{w�3��>_�;'���[�Ϛ��<|�'����V����G��#�Ց�Jz�xx��Ny�x�N���?��9~Lv��x&���M:'���� x�+���C��<�� �ētN�
�i��G���a\�΀'{��)��'�����O�� �<�<S\-���Z�+���#��x��i^��|��C�̮�g��ȋ��J:�������w��!�9�3䟥3��ޤs�����c��G�OvMyc���8Oy��x�N��?� �����������ݯ�]S����;;Nq� O<Q�p����:���ɮ��|G��Gx�x���3q�x��=��﨟y <ٕ�L���?��~����}��}W����7T��=n�׮��8��O���5�x�����Nq� u�W���^q������U>�?��G����{���O��N�?���څ�&=�����?���s����߽�����y�S���|�r�+�d<r��B~@9��'� ��~��7�'���a�O~P��'���g�q����)p��}{��J:�������3('<�$��k�iye��[Nv%=On>^���ϑ��O�I^���U���ߺW'�]I��V���x�N�������N�C�+������~�8��O�iW���x��=nW�#��
z�7�����do��8V���x�N�f�k��k��{q�c³]�|�Z'����g���5��z�o�'k�����x�N�1�r�3/P���Hv%=�;�_��'���|G��O:���]/��Ig�����ޤs� ����'����?ϺP'�<�$�S��g��Ѯ�gץ3��ޤs�?�'�}c�k��L�� �<�<S\-~�����}{�+���#��x��i^��K?�3���Cnh�']Ix�I:���;�i�?gvE=C� �y�v�����I����;�1/0��<,ٕ�L�p��9�Ǚ]I������ga��:�+�4��όOx�x��ᾦ�0����<��k��1�Q?�����2/�����9�Un>q�,�����y �<N���x��������d�y���}=��$o�z���3=������O���::��<���Cuɾ��CĴ_��B[籟���O��HU^8�����#�~������,ξm�������Wv�ރ�w�J:���y���o��6ᑧ��X�.��g��~�o��K�;�w���J:���u�gp�<�$��}Rx�>���j�m�"e�E��N�Cr���\��'����� ��T�{�U��Z�]I'�Z����v��N9�~�N� w���Un����dW��~`�����{�'������e�}��u�=▓��N�E<ث�k���+.m;WW���Iv%=��WW�Ox�I:�G�e?s\��x��cq��zV����O��5�x�N�����{u7�]I��^��DŽ'���x�~���������G�kW��|k�Y����u�yL��Od^��c�֑�Jz�xx��Ny�x� �l��!�xL:���]/��Ig�'{�����L���]��m�ՙ��?p~“]������4N��]Q����)x�I:�q �'��]I��Ix�I:��
�4O������ܠ�� <橅'��s��J��'�'���)�(�C�pfW�ٿ�ss���v��=N�{��;⾗�t�������Lx�I:w����������w�]Iϔ�����uy5<�;��q{fW�i����#�p�U��.�2�/�����3��� �Oܬz���n��ŵ+�4�Q?���?ؕt�﨟8 ��w��x�+���NjX�<�}z�?�׃{�g���wX(<��G���y“��e�������v�����%ϵN��}+#?�� O<��:�.��v�O�W��?ٕt�����'<����n]���ã~��߱P��4ٕt2��N�� O<I'���7���Uo�o��dW�C\������u���s����08yC���׮�������������;�^u2��o�q�5/��Xf��|q�J:��ӿ� O<I���ֿ��ߺ��K�v��r�c�c\R_ă�I��w[���X�]���dWҳ������'<�$��#�o?3ި�qk׮�g����4]��'�4ި�qn�W�q3ٕ���i|Lx�I:���7�:ߪ�[+�׮��������=_��'�<�z�q>6�Q'!�#ٕ����� ����K=.�'�[��u�*]��i�չ9@��d׋��o�Y����Կu��g��Uo�+���< O<�����=�*�<{�����z���4N����9ׅ�<ٕ�L���'��s���O�ԙ]Q��w�̿�L�ԙ]I�4����}>�yx�+�����?� �{�·y�Gj?蔧�ٕt�����'��'���:�w^���?C�y�gʇ����x��!���|��ø�z���L��������/;�1/��}O�|G�q�y����Uo�O��]I������\���3�'�c��~�l��{5U�zn��Jz�����%���~���������C���h�q��,��Ny�?yF������~f>�<�~���/�y�߽S����B���'�#��O�����`x�x��OU�m?|��c��:���c�s��+�q_�v��o�\㉧��xs\�N����~����%9�����k������x��Cx�/�x�����������_���d�.�dW��~H�S'�����þG����d�j�ݧ�~Q���kMv%��k-�k\��6��'������}��>���]I�����e�^��'�t_��b�}��_�ɮ��}���hO���O<���ٿ��v���o�Iv%=��'�^ƃ��
�<�{]��]��g��;n�]I�qE?;>y�����:���s�����]I��^��DŽ'���x�~��������]Q������]~ x�I:����<g^�����Hv���J��#.O�O���l��?�d�$�^D<�N�ētNv�3���W�c���^�3�xy�����\���~U������ɮ�g�o��%��?��3���i\��w�O�?�+�����g�A���>L�I:��_�W��~ߟ�����i>���'{��i�-�C�sfW�3��$<�$�S^�������)�9�3䟜o���@�O�i�c���v������ y���#>��9?�ɮ�����_�7�﨟��ߓ]I���~f|“��u�5e�p� ��Jz�w�O�-�����g��Ǽ�~B<�:�q�,����g>�z�]I�t?^�+�.���vE��{>\�|�_��7T���C�A�<�<����?߉��u��c^���u��~�y����zĵK�Z'�/��N����#�@g{��z����N�P:�{p��~��Я꺥��� O<�}F�S'���v���w���'ٕt2��&<�D��=Y���I��'o�����U���I'��γ�����'���k�X񧿧 N�Q����Pv�Mv%��G\��p�Mx�I:��Jw[�)��;:���l�������������ēt�Wt����:���C�v&��{��G������wĵ���~�M�+�!�N�����Ӿ�P~�ߴ�9T=��V����]I��F��τG���x����{�7�]I��^��DŽ'���x�~��������]Q��k�����a�ꚧO��<�~�9��]��dW�s��K^�tʓ�ēt���_�I���c��E��3�O<I�d<S?)|�;��yv�3�xyV^���G�~U~Xy�:�oIvE=�;?7�^�æqzfW�9���Y�����gv%=S<��<��O�i���e}�h������L�< O�&���[:�������.��$=���z����$<�$����2:�w�I{��� �'<S��x�N��c'<�;[�ZMv%=G<|��ß�ētNy5��;�'o8�+�1���g����Q��̮�s����|G��M�dW�i��~�l�����Ǽ�~B<�|�q�,���ֿ�[$��N��3?��.�x��a���7�ٕtʣ~����'�2�L��y�}�d^�~�#���k�:�G�y�#b���Q�}G�:��A��LayerElementUVIqVersionIe-q
NameSUVMapdqMappingInformationTypeSByPolygonVertex�qReferenceInformationTypeS IndexToDirectS��UVd��x��y���;�(�x DAZ%�5 (�b���LM����h������m�xk�A<�ī0���%G ���GLDQ9<pAY��d��߷U�F��?��7��3�������vx�0c��s����F�5��m\Z~���O�8l8jN9n��ͧZ���6����c���a��?{�G�J{�#�'�x�\��3�x�b�������]0�:�7�n���� �-כN�>O0��3~���1������<8���g�|9�ˣ�Q�d{&X��꽰�.�sIu �v^Y���J�v48> �[��Ouޞ����(O7���υ��s������O���M�u���}����� n�Y3�Qg�y3��{u}"��c6�S~O��X�d�8:��[�P�Ǩ8���F��-{m}u����O;��O�lG��/i���T��&��ޮ� ����r�0n8 ����Ե���M��������*|���#��#q�l������1N����9�j,�� �pu���N�>�@ŭ�����^\��a?V���K�Wǰ�Ч�����U{�v!�G�4ezi���Xc�,��6n.��ohZQ����i�������X��F���Ȏl��<�1x�|ů1��=�,�����7�R���LOp^HV��ahc����YP֏�p�C�\�~ܾ��?��� xny.5\ �[��3`r��V�<�����p�q�n�u��m�z@?�&��s:ž{�b�o$��X���C3a��`K������;���m6�9\�f�����]N��^��̼�3����ΙT�Rpl7�p�`��O��6b��׸|����~�8�t�������o�7�z�<�͛h����~�J\g���P����Z����M/���v�����К���sO��0�a�gʺL?9�<w G���^b];�����W��k��yt=��z�n�� �݉�C�=�?+�8�9���|œb�t{������q�\�g�����>^ޓ���qCܴ�:�7�#`w��@���1�6��.�����?���a�ٓk�+�!.0g�)��Ȗ��|G� ~�WJ��� ��L�)l�Пq��k�.�N��a�<�ӄ�@8��3N�]q���'�N�ޚ�q�9��K��s�8l����L�Yr$����~� ˪��������p��?�{��mw�m��r?}�买�Q�[}~K���w�����m���0�5i������i��sv��i��b�-ُ�����8
r��1��/ ik����r���׻�� �v��]���{0�!.���������v���c��S����]� ��ߖ�^��Z<r �}h�0��-����� ��nGί���|���v����]��H6d5� f�#evS��=ٓ#�g��8>��G���?͉~��NeŁ���D��Ɏ��3�χO��q�Œ/ğX�y�sBG��ОyXm��?8�un_�y�v䡾#����~W��p�d�n�{��9v���:����x���1�D��i���p�����ށ���5Njd]s�+���V��D��|�s^<�޲�nޭ�-��z<w<څ�яo�nv:鹪�L?������5�ۈ{�q��q��˪�^�7���=��_����d=��,���x��(��c��� ĺv\灬�k�* ̋�X��Q��~�/��4�������'M��S<�q����r�.`��8�7�ޡ�K��~�K?����;�C��yҍ�V���_\D?�p=��0���A�������� ���x��[�8Y�-voщEpO�����Q���m�Gk���1�>dr$�o�n�I��� �I;>,qxd��������G�|�*Β�3?�O���s�i��]p���9���a�@=�n?o|����~_X/�:I �$�~�����bn&7n��v�����@���#n���|�(�}��rVX�WU�h/ ��,�������O�m���������̋�c^�
�o{�2� ���VzFz{̟�:�<�䵉�<>�<�l�<^�zu;Ɵо{*����ߢot��w/t,y��O������=�,�$�:�%{ao�g0$.��ӑ�a��x���Nő���:�M��'8�ĺ�L�4�5��$�'������_ �����ҧ���ꇃcG���'�ͺ�=y�e^�?�� J��;���q�e\�� ��v/q�%;�?���­���������<�����;�� ��>�WF��� ��<��y{t�+u�(�$��Y�f<aiw��:�����g\ɺ����
�|�ށ|(ݴ�^��nE�����v(��v�o�X����񫢏���~C��}��k������w-׋��������"�F~^�P���"����D\ᶆ��K=T� �t � �K!��b� �o}��7��D�V��ȸ�]��+U{��6� �z���qD�/�k"�Dx��iU~:��[��G�z�=u�U�S�B��a8o����,���w?�߿ju�{��!������Sb�U��� �F�n�Y룖~>p�f�{��Ϋ�kβr�%�ӎ,ya��N���8���?͡��9�������X��l�z����s�:�c?v�t�|�]�x~�j�3S�϶�+��E��� +��0����r��7z?&<�8"�������� ��z�W��X�8! e�@�����8���'l��f��o��Uwu쉸���g�ֳ!G�֯t�� q^C�5�Y�ɗD��a������7�����Z������H?�?d�N��x��%o����݊w�=��W�k���OE/�|F�T�G����8�9���꾖:��]�~=�i�N mqtٯO=�p;w����{zFi���N,����?�}���5��݉��4�w��8�\�y��'m�:��~��@d�|��긯��OZ�)���_�8�5�ח�9t�G��=�{�vd}�T�6�C�I�q,u����נr����X��'��������B������#�h���n�O���x���퍰z�U�}[,����:���=���m��� ��3�jo�{$�� ;����3.�O�{M-��~�S� �#�>�w���h��xV��> �_ԁ"ٓ�|�c�9D{JNd��i%��S�i�����k���Щ�̢g���O�.��㘟a�D�?מ�u �ytf�%��u<����9�#�����?[ʼn�;Sp�㉬�G�c2�q�?��C��G��ݿY�0�ϾK���OڕL;c��EG��Fd��G㟡o�}1�㾁�n�1N��!n�����g�o�8Mu_C���@�?���0v?}�~Y������K�+N��x�T?H�!y����b���č�zT��0�n! ���;2��*���N�k�y�����t]��S_�np�G]D�Ax�q��Q�?h���C?.�VI�/�G��-�}��H3��=��P��b����9���u���<��A��r\ɋ���]�''����+Ǎ������.��n���v���x ���L��:���p���u,�=^�q叴~ᔞ�w�Α3�S�D���z|G%]������~���q@z����Pqj@�O�.���k�K?觱�]-�~"��M-�a}m�T7h�=�M�7��#�3n˰�"��6�7�v���x>2N�zʼ-�S���j��������&��7�����a��O�Q�SQt_���zRɻN����O���~?1��|�|K�v��:m��n�j�n�~#�������&y������%����q7��{ ��ERzCVl�O������i�K��;q_E� ?�����S�o�;T���}�uX���*�[�-��*^p��I�`t������HN��=�N�z'��W� =`���؏v����y�a����z ���9����ÅsPW����F��^?��g����u�-�d�=�;aO,��c�}�:w�: ˺
5���i�X�U�/�{�W�_�ùKGR�UH^)�E��yֽ��ᯃ�j�Q�3�u4��j}A��l����?jȢ��������7%�d]B�����5�_����P����|�~]T���o��_o���8���X_)ߏ��z��E�����Ɇ��7�/u�¢���ϻ���u��u�IX ���������-�h �jTsX��~�j�Z�N�A�5��~Q�9��#�W /��],�Kδ�v���� 6��w� u@'��aC�}?ݰoY�nXo����n� �����%0�R�>����a�U߿�G-��[w�u{͒��a+��5t{�V���������#+��UVIndexi  x-���UF/�� ����������F�$��ADPBA@@�@�P���㚽����9�̚�_�Ĩ+�DDTgƍ��y """1s#��'en��`�dמ�_���¥`w��L�L��nn�d������9r�X�T\Kz�0����;���<��}�+΃�-����#�' ����9'�� �F2����!�+p��?�yΒ}F�,�p�>#+,����?�M\!�i�Mh�ߣ(�޻O�g��]���>���8�0��ܭE^G.��|ɹ�g��/�hJ�ՙ�-!���P�g�ǯw����}����5�gx��~)��n�J|�w�r�ɹ9ӻ���g����]̅�|FU8��Mg޻m97`� �v%#7��f���g.��e!'d��{��]��w/�r��陙8 '�H�Fg.Q�[�Nn���n9r^fn|f�d�n >;3 �7���ٚ��y�]f~�1�0�� �u�%�%�ܝ<���7�����ח�Bj\�:��m#�%煋P���_�|���\�y *��0��.�Ur>� |�%����tM�m�s�_�܊��0\krG�1��:��3�����<
p^Sȉ��� �$̙����!�d��T�,<�-�(D�7�oĮ�-����j0��iE~L�@��|�qu�Uq����\�|���������srt�L��$� �,8s\� q���yfv{B^�����3��_�y5�>�"y � �*�ÙOqo��&�ӗ�P�'�m!&g];�:1!���.���X�����%�M�{@�
�9/�i� t
�+�y9+�!�c~�~ ,�X���=a6�C���^}�q�p��+�O9O�����*p��w�n�%3��qm�=�so3� ������A
�\��!1�ǜg������e�+`�t�d8����.x�2�,�/�e٥gf��g�dn� g��=��8d���sK8
�q�&���u�ӌܙ�ε�)�s#~7~4�;v�����s�M� ��;���)a ����'��䳸't�3�3��B[��;��`%�T̞�(�{�����U+��t;�1kr~HnǬ����e`D�ͦSV�,�:0_q���'��ȏ�����$�g����B�|�w��3����|j�텫�,�̉[e�0�X���O ��񿓧2�@o�H|yf%�w��� e�3��G܁��g����tu��<8��S�37�N��|���̵q�@gn�/:�~�08s^|<Йw2�Μ�t� �Y�g�� :�?p98so|�����߁�� Wt��<�MЙ��w��\��^��:��VЙ�����\�t�e0t� �o�cB^�|t����u�A�08�(|Йo�!Й��2u�+̽�3����y'� μ�!����L'��;��@gN��;8�4|?Й������?��|�yt�G� �3���%Ag>��:s �JЙ�3��!Y�S�������σ;�|��52%Y�/f_�}�����F�a�b�5�8���1��0Ŏ;_�s��?���̗!���k��=1�ϴ�lϹ6{}k�bvw�������;bǝ�={���^���ro$���� 'fw~v�nY?1`v����p�����=�/b�g���\1?�͂B��a�)�Ď� �����3�Ŝ�nT���o‰�]$�0�8{}����A�if!:��qO���ݱ%�T�}�Y��cևoٵ����]0�����������oB�;g{��=1��}� g?�����|_�N~�?�{�3gp��a�ٝ��s9������G��FC:v��n)g��{���~�HOG����}�^������/8����2�g�aw�;b�]I�^v�A'f�C+������K��ݕ'��{}����P�����^�����]W��������^��=��jw��^���ot�M ���W"�0p�=1�����$d��0G�"�*��UݭG��]Vr�ʰ��;���{�9秣ߊ����b�օ]M�b�]A:��E�����;?w��|6��s;��A'�}ozbv���8��쫟0��5����ts1w�Ŝ�}��v�uf���� L;�j������}o����Y�G�-�vv�u�b�3���}ﳣ������l����0zb�~���Վ>^��gڇ�yd;��r�#�8�1=t�I�b�.5|�َ>S�i���sg;�u��<��������s&𷍽���Ks�����7%���1�bW��g;��x1��t�,dG� N�������߬nq��_v�u枘o�󷱷CG�7g1_a�L׎�;^̃�~�;:�W���?��:t����y$� '�s,X�ݭL;�����
v���BG�/f���]���s��\���]�llG���W0���gi;�z��\�n�go;�_8��8��%���䎘;C3�evv����w�n������������~w��/`�~W���w�9����� t�k8�y3#���}��3AZ��w;��81�]vr!���81g�Hr>���W ���A�����;�1`W��$t���b�u�w����81�aW�ܜ�}߀��[�C�wo���!����lG5`��nL$�q7���G�c�~m���u]�<��o#�p���A�㎘{�ې��ϒ���bn �� �q�19��{�1t�0gq�/�,���d�w~;�xL1'K��y����M5-97yf��'vҁ����lG_�����u+�!َ�K��y�R�����o��\.⛃�I��/�+���kF�w�+�5�=�w��'���.⇇��1g1_b������'pO�����;��81�� %' �4���Ar���g ���G���LL�]&�\b���||�����,������x1�}��`G'����d󳣯IO�%����*����Y�G�m�َ�:w����D��oy��qbn �����o���ߊ�ot���w����烻؜���9���f�[���bv�r���������]NЯÉ�]fr>vv���Ĝ�-<w4~{b�3`���ǘ�����;b�î�A��������[���ofw�M���^�E����#�qב�����*�W�v��q�5�x�lG?�������'} zbv&s����s,������s̱ >�-L;�ޠ'�����r�������2 C�} zb.���
��}]s~|�f���:�Ϲ��#WǗ �'o"#7����;���;h��� �qׂ܍9���������~t��.�?�.�qw����Ľ��w����}�\\������9�8�̤��R�w� /y.��½U`�]*rf~���i������NF�Z�z��.#9/�"� �7��q����NEf)��;�v�3��\�-�����:���kB����`��|+�� w��k`fך|��� 츻��Ϲ���8�v܍�I�ϸ���DN̜��y6�;��LvI��#� ��w��)��X�>;��1��S�?&g�� ��[���9�Nv�g���e̒P��>'���A8vE���[��g�c�`��|�@�+�縣`�]irUvu�_��B ���<�����������H�:��G�X��������q������g�A�����v����Й��v���.:3s<>5� w�ag;陫��)�q���;t֒�B9��.�VӵS���v����5t6�*C5��./�Sd;ՙ�U;����s>͹2�{�W����Ж|~ �E��qW�g��܎}O揸[`��m|���'|f?���t�sWr&:":�q�~*�Ā(���w#�0�9�st�b��w�!+y|L~�^������G!3�����k�w������y�����?T��LayerI��VersionId(� LayerElement��TypeSLayerElementNormal�
TypedIndexI�� LayerElemente�TypeSLayerElementUV��
TypedIndexI|�.ModelLZ��/SCircle Arena.002ModelSMesh�VersionI��� Properties70v�NPSLcl TranslationSLcl TranslationSSAD Y�D��Vy@D��/����8PSDefaultAttributeIndexSintSIntegerSI��(PS InheritTypeSenumSSI�
MultiLayerI6� MultiTakeIL�ShadingCo�CullingS
CullingOff�� ConnectionsȔCSOOLZ��/L��CSOOL툒LZ��/4�Takes'�CurrentS��� ���f�v���&~��Z�j���~�� �u�)

247
Project/Assets/ML-Agents/Examples/Sorter/Meshes/ArenaWalls.fbx.meta


fileFormatVersion: 2
guid: f6ecb5c7cab484e639c060714bfd6d51
ModelImporter:
serializedVersion: 23
fileIDToRecycleName:
100000: //RootNode
100002: BezierCurve
100004: Camera
100006: Circle
100008: Circle Arena
100010: Circle Arena.001
100012: Circle Arena.002
100014: Circle.001
100016: Circle.002
100018: Circle.003
100020: Circle.004
100022: Cone
100024: Cone.002
100026: Cone.003
100028: Cone.004
100030: Cone.005
100032: Icosphere
100034: Icosphere.001
100036: Icosphere.002
100038: Icosphere.003
100040: Icosphere.004
100042: Light
100044: Mball
100046: Roundcube.001
100048: Roundcube.002
100050: Roundcube.003
100052: SantaHat
100054: Shield
100056: Shield.001
100058: Text
100060: Tree
400000: //RootNode
400002: BezierCurve
400004: Camera
400006: Circle
400008: Circle Arena
400010: Circle Arena.001
400012: Circle Arena.002
400014: Circle.001
400016: Circle.002
400018: Circle.003
400020: Circle.004
400022: Cone
400024: Cone.002
400026: Cone.003
400028: Cone.004
400030: Cone.005
400032: Icosphere
400034: Icosphere.001
400036: Icosphere.002
400038: Icosphere.003
400040: Icosphere.004
400042: Light
400044: Mball
400046: Roundcube.001
400048: Roundcube.002
400050: Roundcube.003
400052: SantaHat
400054: Shield
400056: Shield.001
400058: Text
400060: Tree
2000000: Camera
2100000: No Name
2100002: Red
2100004: White
2100006: green
2100008: Brown
2300000: //RootNode
2300002: BezierCurve
2300004: Circle
2300006: Circle Arena
2300008: Circle Arena.001
2300010: Circle Arena.002
2300012: Circle.001
2300014: Circle.002
2300016: Circle.003
2300018: Circle.004
2300020: Cone
2300022: Cone.002
2300024: Cone.003
2300026: Cone.004
2300028: Cone.005
2300030: Icosphere
2300032: Icosphere.001
2300034: Icosphere.002
2300036: Icosphere.003
2300038: Icosphere.004
2300040: Mball
2300042: Roundcube.001
2300044: Roundcube.002
2300046: Roundcube.003
2300048: SantaHat
2300050: Shield
2300052: Shield.001
2300054: Text
2300056: Tree
3300000: //RootNode
3300002: BezierCurve
3300004: Circle
3300006: Circle Arena
3300008: Circle Arena.001
3300010: Circle Arena.002
3300012: Circle.001
3300014: Circle.002
3300016: Circle.003
3300018: Circle.004
3300020: Cone
3300022: Cone.002
3300024: Cone.003
3300026: Cone.004
3300028: Cone.005
3300030: Icosphere
3300032: Icosphere.001
3300034: Icosphere.002
3300036: Icosphere.003
3300038: Icosphere.004
3300040: Mball
3300042: Roundcube.001
3300044: Roundcube.002
3300046: Roundcube.003
3300048: SantaHat
3300050: Shield
3300052: Shield.001
3300054: Text
3300056: Tree
4300000: Circle Arena.002
4300002: Shield
4300004: Roundcube.001
4300006: Roundcube.002
4300008: Shield.001
4300010: Circle Arena
4300012: Text
4300014: Circle Arena.001
4300016: Cone
4300018: SantaHat
4300020: Cone.002
4300022: Cone.003
4300024: Cone.004
4300026: Cone.005
4300028: Roundcube.003
4300030: Icosphere
4300032: Mball
4300034: BezierCurve
4300036: Circle
4300038: Circle.001
4300040: Icosphere.001
4300042: Icosphere.002
4300044: Circle.002
4300046: Circle.003
4300048: Circle.004
4300050: Tree
4300052: Icosphere.003
4300054: Icosphere.004
10800000: Light
2186277476908879412: ImportLogs
externalObjects: {}
materials:
importMaterials: 1
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
optimizeMeshForGPU: 1
keepQuads: 0
weldVertices: 1
preserveHierarchy: 0
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVPackMargin: 4
useFileScale: 1
previousCalculatedGlobalScale: 1
hasPreviousCalculatedGlobalScale: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
importAnimation: 1
copyAvatar: 0
humanDescription:
serializedVersion: 2
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
animationType: 0
humanoidOversampling: 1
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

8
Project/Assets/ML-Agents/Examples/Sorter/Prefabs.meta


fileFormatVersion: 2
guid: af7cee3bddc2e4ed595824b3c6d542b6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
Project/Assets/ML-Agents/Examples/Sorter/Prefabs/Area.prefab
文件差异内容过多而无法显示
查看文件

7
Project/Assets/ML-Agents/Examples/Sorter/Prefabs/Area.prefab.meta


fileFormatVersion: 2
guid: 1cf3ef0a332884c299335f3fbe8a21fc
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Project/Assets/ML-Agents/Examples/Sorter/Scenes.meta


fileFormatVersion: 2
guid: 4c130af3da8f146a795356f021688b89
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

653
Project/Assets/ML-Agents/Examples/Sorter/Scenes/Sorter.unity


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.8, g: 0.8, b: 0.8, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 3
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 11
m_GIWorkflowMode: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 1
m_LightmapEditorSettings:
serializedVersion: 10
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 0
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVRBounces: 2
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVRFilteringMode: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ShowResolutionOverlay: 1
m_LightingDataAsset: {fileID: 112000002, guid: 03723c7f910c3423aa1974f1b9ce8392,
type: 2}
m_UseShadowmask: 1
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &255077123
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 255077126}
- component: {fileID: 255077125}
- component: {fileID: 255077124}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &255077124
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 255077123}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalAxis: Horizontal
m_VerticalAxis: Vertical
m_SubmitButton: Submit
m_CancelButton: Cancel
m_InputActionsPerSecond: 10
m_RepeatDelay: 0.5
m_ForceModuleActive: 0
--- !u!114 &255077125
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 255077123}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 5
--- !u!4 &255077126
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 255077123}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &318490716
GameObject:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 318490717}
m_Layer: 0
m_Name: UnityEngine-Recorder
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &318490717
Transform:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 318490716}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 365376271}
- {fileID: 1265651286}
m_Father: {fileID: 0}
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &365376270
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 365376271}
m_Layer: 0
m_Name: Settings
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &365376271
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 365376270}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 1257687049}
m_Father: {fileID: 318490717}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &502449554
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalPosition.x
value: 106.38621
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalPosition.y
value: 38.840767
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalPosition.z
value: 34.72934
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalRotation.x
value: 0.31598538
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalRotation.y
value: -0.3596048
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalRotation.z
value: 0.13088542
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_LocalRotation.w
value: 0.8681629
objectReference: {fileID: 0}
- target: {fileID: 4943719350691982, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
propertyPath: m_RootOrder
value: 4
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 5889392e3f05b448a8a06c5def6c2dec, type: 3}
--- !u!1 &1009000883
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1009000884}
- component: {fileID: 1009000887}
m_Layer: 0
m_Name: SingleCam
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1009000884
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1009000883}
m_LocalRotation: {x: 0.5, y: 0, z: 0, w: 0.8660254}
m_LocalPosition: {x: 0, y: 30, z: -22}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 60, y: 0, z: 0}
--- !u!20 &1009000887
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1009000883}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0.46666667, g: 0.5647059, b: 0.60784316, a: 1}
m_projectionMatrixMode: 1
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_GateFitMode: 2
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 6.98
m_Depth: 2
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!1 &1257687048
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1257687049}
m_Layer: 0
m_Name: 50bfc0f4c3d6f46df98d3c66ceb89209
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1257687049
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1257687048}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 365376271}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1265651285
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1265651286}
m_Layer: 0
m_Name: RecordingSessions
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1265651286
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1265651285}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 318490717}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1574236047
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1574236049}
- component: {fileID: 1574236050}
- component: {fileID: 1574236048}
m_Layer: 0
m_Name: PushBlockSettings
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1574236048
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1574236047}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ec51f47c5ed0478080c449c74fd9c154, type: 3}
m_Name:
m_EditorClassIdentifier:
gravityMultiplier: 2.5
fixedDeltaTime: 0.02
maximumDeltaTime: 0.33333334
solverIterations: 6
solverVelocityIterations: 1
reuseCollisionCallbacks: 1
--- !u!4 &1574236049
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1574236047}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1574236050
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1574236047}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e5ed63dbfa25542ecb8bc013adfba183, type: 3}
m_Name:
m_EditorClassIdentifier:
agentRunSpeed: 3
agentRotationSpeed: 15
spawnAreaMarginMultiplier: 0.5
goalScoredMaterial: {fileID: 2100000, guid: df32cc593804f42df97464dc455057b8, type: 2}
failMaterial: {fileID: 2100000, guid: a1daf31cdf41e484ca9ac33a5c6f524a, type: 2}
--- !u!1001 &1900462655
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_RootOrder
value: 3
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMin.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMax.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_Pivot.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 224194346362733190, guid: 3ce107b4a79bc4eef83afde434932a68,
type: 3}
propertyPath: m_Pivot.y
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 3ce107b4a79bc4eef83afde434932a68, type: 3}
--- !u!1001 &8757788144016958866
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 960518523084491425, guid: 1cf3ef0a332884c299335f3fbe8a21fc,
type: 3}
propertyPath: m_Name
value: Area
objectReference: {fileID: 0}
- target: {fileID: 6904544463179701055, guid: 1cf3ef0a332884c299335f3fbe8a21fc,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6904544463179701055, guid: 1cf3ef0a332884c299335f3fbe8a21fc,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6904544463179701055, guid: 1cf3ef0a332884c299335f3fbe8a21fc,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6904544463179701055, guid: 1cf3ef0a332884c299335f3fbe8a21fc,
type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 6904544463179701055, guid: 1cf3ef0a332884c299335f3fbe8a21fc,
type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 6904544463179701055, guid: 1cf3ef0a332884c299335f3fbe8a21fc,
type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 6904544463179701055, guid: 1cf3ef0a332884c299335f3fbe8a21fc,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6904544463179701055, guid: 1cf3ef0a332884c299335f3fbe8a21fc,
type: 3}
propertyPath: m_RootOrder
value: 5
objectReference: {fileID: 0}
- target: {fileID: 6904544463179701055, guid: 1cf3ef0a332884c299335f3fbe8a21fc,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6904544463179701055, guid: 1cf3ef0a332884c299335f3fbe8a21fc,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6904544463179701055, guid: 1cf3ef0a332884c299335f3fbe8a21fc,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 1cf3ef0a332884c299335f3fbe8a21fc, type: 3}

9
Project/Assets/ML-Agents/Examples/Sorter/Scenes/Sorter.unity.meta


fileFormatVersion: 2
guid: f23c5f09c95ad48768a41974a2f1523c
timeCreated: 1506808980
licenseType: Pro
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
Project/Assets/ML-Agents/Examples/Sorter/Scripts.meta


fileFormatVersion: 2
guid: 7e13230b4597f444eb241e0309a786b4
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

36
Project/Assets/ML-Agents/Examples/Sorter/Scripts/NumberTile.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NumberTile : MonoBehaviour
{
public int NumberValue;
public Material DefaultMaterial;
public Material SuccessMaterial;
private bool m_Visited = false;
private MeshRenderer m_Renderer;
void Awake()
{
m_Renderer = GetComponentInChildren<MeshRenderer>();
ResetTile();
}
public bool IsVisited
{
get { return m_Visited; }
}
public void VisitTile()
{
m_Renderer.sharedMaterial = SuccessMaterial;
m_Visited = true;
}
public void ResetTile()
{
m_Renderer.sharedMaterial = DefaultMaterial;
m_Visited = false;
}
}

271
Project/Assets/ML-Agents/Examples/Sorter/Scripts/SorterAgent.cs


using System.Collections.Generic;
using UnityEngine;
using Unity.MLAgents;
using Unity.MLAgents.Actuators;
using Unity.MLAgents.Sensors;
using Random = UnityEngine.Random;
public class SorterAgent : Agent
{
[Range(1, 20)]
public int DefaultMaxNumTiles;
private const int k_HighestTileValue = 20;
int m_NumberOfTilesToSpawn;
int m_MaxNumberOfTiles;
PushBlockSettings m_PushBlockSettings;
Rigidbody m_AgentRb;
// The BufferSensorComponent is the Sensor that allows the Agent to observe
// a variable number of items (here, numbered tiles)
BufferSensorComponent m_BufferSensor;
public List<NumberTile> NumberTilesList = new List<NumberTile>();
private List<NumberTile> CurrentlyVisibleTilesList = new List<NumberTile>();
private List<Transform> AlreadyTouchedList = new List<Transform>();
private List<int> m_UsedPositionsList = new List<int>();
private Vector3 m_StartingPos;
GameObject m_Area;
EnvironmentParameters m_ResetParams;
private int m_NextExpectedTileIndex;
public override void Initialize()
{
m_Area = transform.parent.gameObject;
m_MaxNumberOfTiles = k_HighestTileValue;
m_ResetParams = Academy.Instance.EnvironmentParameters;
m_BufferSensor = GetComponent<BufferSensorComponent>();
m_PushBlockSettings = FindObjectOfType<PushBlockSettings>();
m_AgentRb = GetComponent<Rigidbody>();
m_StartingPos = transform.position;
}
public override void OnEpisodeBegin()
{
m_MaxNumberOfTiles = (int)m_ResetParams.GetWithDefault("num_tiles", DefaultMaxNumTiles);
m_NumberOfTilesToSpawn = Random.Range(1, m_MaxNumberOfTiles + 1);
SelectTilesToShow();
SetTilePositions();
transform.position = m_StartingPos;
m_AgentRb.velocity = Vector3.zero;
m_AgentRb.angularVelocity = Vector3.zero;
}
public override void CollectObservations(VectorSensor sensor)
{
sensor.AddObservation((transform.position.x - m_Area.transform.position.x) / 20f);
sensor.AddObservation((transform.position.z - m_Area.transform.position.z) / 20f);
sensor.AddObservation(transform.forward.x);
sensor.AddObservation(transform.forward.z);
foreach (var item in CurrentlyVisibleTilesList)
{
// Each observation / tile in the BufferSensor will have 22 values
// The first 20 are one hot encoding of the value of the tile
// The 21st is the angle of the tile on the circle wall
// The 22nd is a boolean : 1 if the tile was visited already and 0 otherwise
float[] listObservation = new float[k_HighestTileValue + 2];
listObservation[item.NumberValue] = 1.0f;
listObservation[k_HighestTileValue] = (item.transform.localRotation.eulerAngles.y / 360f);
listObservation[k_HighestTileValue + 1] = item.IsVisited ? 1.0f : 0.0f;
// Here, the observation for the tile is added to the BufferSensor
m_BufferSensor.AppendObservation(listObservation);
};
}
private void OnCollisionEnter(Collision col)
{
if (!col.gameObject.CompareTag("tile"))
{
return;
}
if (AlreadyTouchedList.Contains(col.transform))
{
return;
}
if (col.transform.parent != CurrentlyVisibleTilesList[m_NextExpectedTileIndex].transform)
{
// The Agent Failed
AddReward(-1);
EndEpisode();
}
else
{
// The Agent Succeeded
AddReward(1);
var tile = col.gameObject.GetComponentInParent<NumberTile>();
tile.VisitTile();
m_NextExpectedTileIndex++;
AlreadyTouchedList.Add(col.transform);
//We got all of them. Can reset now.
if (m_NextExpectedTileIndex == m_NumberOfTilesToSpawn)
{
EndEpisode();
}
}
}
void SetTilePositions()
{
m_UsedPositionsList.Clear();
//Disable all. We will enable the ones selected
foreach (var item in NumberTilesList)
{
item.ResetTile();
item.gameObject.SetActive(false);
}
foreach (var item in CurrentlyVisibleTilesList)
{
//Select a rnd spawnAngle
bool posChosen = false;
int rndPosIndx = 0;
while (!posChosen)
{
rndPosIndx = Random.Range(0, k_HighestTileValue);
if (!m_UsedPositionsList.Contains(rndPosIndx))
{
m_UsedPositionsList.Add(rndPosIndx);
posChosen = true;
}
}
item.transform.localRotation = Quaternion.Euler(0, rndPosIndx * (360f / k_HighestTileValue), 0);
item.gameObject.SetActive(true);
}
}
void SelectTilesToShow()
{
CurrentlyVisibleTilesList.Clear();
AlreadyTouchedList.Clear();
int numLeft = m_NumberOfTilesToSpawn;
while (numLeft > 0)
{
int rndInt = Random.Range(0, k_HighestTileValue);
var tmp = NumberTilesList[rndInt];
if (!CurrentlyVisibleTilesList.Contains(tmp))
{
CurrentlyVisibleTilesList.Add(tmp);
numLeft--;
}
}
//Sort Ascending
CurrentlyVisibleTilesList.Sort((x, y) => x.NumberValue.CompareTo(y.NumberValue));
m_NextExpectedTileIndex = 0;
}
/// <summary>
/// Moves the agent according to the selected action.
/// </summary>
public void MoveAgent(ActionSegment<int> act)
{
var dirToGo = Vector3.zero;
var rotateDir = Vector3.zero;
var forwardAxis = act[0];
var rightAxis = act[1];
var rotateAxis = act[2];
switch (forwardAxis)
{
case 1:
dirToGo = transform.forward * 1f;
break;
case 2:
dirToGo = transform.forward * -1f;
break;
}
switch (rightAxis)
{
case 1:
dirToGo = transform.right * 1f;
break;
case 2:
dirToGo = transform.right * -1f;
break;
}
switch (rotateAxis)
{
case 1:
rotateDir = transform.up * -1f;
break;
case 2:
rotateDir = transform.up * 1f;
break;
}
transform.Rotate(rotateDir, Time.deltaTime * 200f);
m_AgentRb.AddForce(dirToGo * m_PushBlockSettings.agentRunSpeed,
ForceMode.VelocityChange);
}
/// <summary>
/// Called every step of the engine. Here the agent takes an action.
/// </summary>
public override void OnActionReceived(ActionBuffers actionBuffers)
{
// Move the agent using the action.
MoveAgent(actionBuffers.DiscreteActions);
// Penalty given each step to encourage agent to finish task quickly.
AddReward(-1f / MaxStep);
}
public override void Heuristic(in ActionBuffers actionsOut)
{
var discreteActionsOut = actionsOut.DiscreteActions;
discreteActionsOut.Clear();
//forward
if (Input.GetKey(KeyCode.W))
{
discreteActionsOut[0] = 1;
}
if (Input.GetKey(KeyCode.S))
{
discreteActionsOut[0] = 2;
}
//rotate
if (Input.GetKey(KeyCode.A))
{
discreteActionsOut[2] = 1;
}
if (Input.GetKey(KeyCode.D))
{
discreteActionsOut[2] = 2;
}
//right
if (Input.GetKey(KeyCode.E))
{
discreteActionsOut[1] = 1;
}
if (Input.GetKey(KeyCode.Q))
{
discreteActionsOut[1] = 2;
}
}
}

11
Project/Assets/ML-Agents/Examples/Sorter/Scripts/SorterAgent.cs.meta


fileFormatVersion: 2
guid: 107ccb3d53379468eb5ba1b7ac443919
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

8
Project/Assets/ML-Agents/Examples/Sorter/TFModels.meta


fileFormatVersion: 2
guid: 03d978c974e06423baa61d796282ad7b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

1001
Project/Assets/ML-Agents/Examples/Sorter/TFModels/Sorter.onnx
文件差异内容过多而无法显示
查看文件

15
Project/Assets/ML-Agents/Examples/Sorter/TFModels/Sorter.onnx.meta


fileFormatVersion: 2
guid: 4fe6928f1bf4c433db84b8de4e1732ef
ScriptedImporter:
fileIDToRecycleName:
11400000: main obj
11400002: model data
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3}
optimizeModel: 1
forceArbitraryBatchSize: 1
treatErrorsAsWarnings: 0
importMode: 1

143
Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/CollisionCallbacks.cs


using UnityEngine;
using Random = UnityEngine.Random;
using Unity.MLAgents;
using UnityEngine.Events;
namespace Unity.MLAgentsExamples
{
/// <summary>
/// Utility class to allow target placement and collision detection with an agent
/// Add this script to the target you want the agent to touch.
/// Callbacks will be triggered any time the target is touched with a collider tagged as 'tagToDetect'
/// </summary>
public class CollisionCallbacks : MonoBehaviour
{
// [System.Serializable] public class BoolEvent : UnityEvent<bool> { }
// [SerializeField] BoolEvent boolEvent = new BoolEvent();
// public void OnBoolEvent(bool value)
// {
// Debug.Log($"OnBoolEvent {value}");
// }
[Header("Collider Tag To Detect")]
public string tagToDetect = "agent"; //collider tag to detect
// [Header("Target Placement")]
// public float spawnRadius; //The radius in which a target can be randomly spawned.
// public bool respawnIfTouched; //Should the target respawn to a different position when touched
//
// [Header("Target Fell Protection")]
// public bool respawnIfFallsOffPlatform = true; //If the target falls off the platform, reset the position.
// public float fallDistance = 5; //distance below the starting height that will trigger a respawn
//
//
// private Vector3 m_startingPos; //the starting position of the target
// private Agent m_agentTouching; //the agent currently touching the target
[System.Serializable]
// public class TriggerEvent : UnityEvent<string>
public class TriggerEvent : UnityEvent<Collider>
{
}
[Header("Trigger Callbacks")]
public TriggerEvent onTriggerEnterEvent = new TriggerEvent();
public TriggerEvent onTriggerStayEvent = new TriggerEvent();
public TriggerEvent onTriggerExitEvent = new TriggerEvent();
[System.Serializable]
public class CollisionEvent : UnityEvent<Collision, Transform>
{
}
[Header("Collision Callbacks")]
public CollisionEvent onCollisionEnterEvent = new CollisionEvent();
public CollisionEvent onCollisionStayEvent = new CollisionEvent();
public CollisionEvent onCollisionExitEvent = new CollisionEvent();
// // Start is called before the first frame update
// void OnEnable()
// {
// m_startingPos = transform.position;
// if (respawnIfTouched)
// {
// MoveTargetToRandomPosition();
// }
// }
// void Update()
// {
// if (respawnIfFallsOffPlatform)
// {
// if (transform.position.y < m_startingPos.y - fallDistance)
// {
// Debug.Log($"{transform.name} Fell Off Platform");
// MoveTargetToRandomPosition();
// }
// }
// }
// /// <summary>
// /// Moves target to a random position within specified radius.
// /// </summary>
// public void MoveTargetToRandomPosition()
// {
// var newTargetPos = m_startingPos + (Random.insideUnitSphere * spawnRadius);
// newTargetPos.y = m_startingPos.y;
// transform.position = newTargetPos;
// }
private void OnCollisionEnter(Collision col)
{
if (col.transform.CompareTag(tagToDetect))
{
onCollisionEnterEvent.Invoke(col, transform);
// if (respawnIfTouched)
// {
// MoveTargetToRandomPosition();
// }
}
}
private void OnCollisionStay(Collision col)
{
if (col.transform.CompareTag(tagToDetect))
{
onCollisionStayEvent.Invoke(col, transform);
}
}
private void OnCollisionExit(Collision col)
{
if (col.transform.CompareTag(tagToDetect))
{
onCollisionExitEvent.Invoke(col, transform);
}
}
private void OnTriggerEnter(Collider col)
{
if (col.CompareTag(tagToDetect))
{
onTriggerEnterEvent.Invoke(col);
}
}
private void OnTriggerStay(Collider col)
{
if (col.CompareTag(tagToDetect))
{
onTriggerStayEvent.Invoke(col);
}
}
private void OnTriggerExit(Collider col)
{
if (col.CompareTag(tagToDetect))
{
onTriggerExitEvent.Invoke(col);
}
}
}
}

/Project/Assets/ML-Agents/Examples/SharedAssets/Scripts/CollisionCallbacks.cs.meta → /Project/Assets/ML-Agents/Examples/Sorter/Scripts/NumberTile.cs.meta

正在加载...
取消
保存