Search Unity

TriLib - Model Loading Package

Discussion in 'Assets and Asset Store' started by rickomax, Jun 21, 2017.

  1. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    Important:
    For anyone who still using TriLib 1.9.0 and needs access to the project and native source-code, please e-mail me at contato@ricardoreis.net with a message containing your GitHub username and your TriLib invoice number.

    I have set-up GitHub repository with the latest TriLib 1.9.0 Unity project and another one with the native libraries source which is compatible with the Unity project.

    Users who already have access to the native libraries repository have been automatically invited to the Unity project repository.

    Sorry about the delay!
     
  2. andyz

    andyz

    Joined:
    Jan 5, 2010
    Posts:
    2,268
    TrilLib 2 is not handling negative scale on a child (fbx) it seems. Maybe things should not have negative scale but your importer just ignores the sign and so flips an item, where as say Autodesk's viewer will handle it.

    Test model emailed for my issues
     
    Last edited: Oct 30, 2020
  3. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    Hi!
    I'm aware of this issue and working on a fix.
    Thank you.
     
    andyz likes this.
  4. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    This issue has been fixed and the fix will be available on TriLib next update.
     
    andyz likes this.
  5. icefallgames

    icefallgames

    Joined:
    Dec 6, 2014
    Posts:
    75
    Ricardo, did you get my support email about TriLib2 not loading obj materials properly?
     
  6. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    Yes, I have answered you, as far as I remember.
    The OBJ parser isn't ready to deal with spaces in filenames, so I'm fixing it right now.
     
  7. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    This issue has been fixed. The fix will be available on the next update.
     
  8. icefallgames

    icefallgames

    Joined:
    Dec 6, 2014
    Posts:
    75
    Awesome, thanks! Do you know when the next update will be released?
     
  9. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    Probably in one or two days
     
    icefallgames likes this.
  10. ina

    ina

    Joined:
    Nov 15, 2010
    Posts:
    1,084
    var uriLoadCustomContextData = assetLoaderContext.CustomData as UriLoadCustomContextData;


    It looks like in your URL Load example that comes out as null, so fetching URL is null too... Bug report, or accessing wrong somehow?


    var uriLoadCustomContextData = assetLoaderContext.CustomData as UriLoadCustomContextData;

    appears to be null
     
    Last edited: Nov 2, 2020
  11. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    Could you show the full code you're using to load?
     
  12. ina

    ina

    Joined:
    Nov 15, 2010
    Posts:
    1,084
    Hi, all I did was add that to your Load URI example in onMaterialsLoad

    assetLoaderContext.CustomData for UILoadCustomContextData turns out null

    Code (CSharp):
    1.         private void OnMaterialsLoad(AssetLoaderContext assetLoaderContext)
    2.         {
    3.             Debug.Log("Materials loaded. Model fully loaded.");
    4.  
    5.             var uriloader = assetLoaderContext.CustomData as UriLoadCustomContextData;
    6.  
    7.             print(uriloader.UnityWebRequest.url);
    8.         }
    assetLoaderContext.CustomData is closed source so I can't go deeper - please fix!
     
    Last edited: Nov 3, 2020
  13. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    Alright, I will create a small test case and check it out today.
     
  14. icefallgames

    icefallgames

    Joined:
    Dec 6, 2014
    Posts:
    75
    I tried your latest release, and it's fixed, thanks!

    I just sent you another couple of support emails about two fbx's that aren't loading materials correctly though.
     
    Last edited: Nov 3, 2020
  15. icefallgames

    icefallgames

    Joined:
    Dec 6, 2014
    Posts:
    75
    It looks like there is a problem when there are two requests to import the same file. We can probably work around this for the time being, but it is something you might want to fix.

    It looks like you might be opening the file with FileShare.None, when you could be using FireShare.Read?

    It also means it will fail to import a file if some other process happens to be reading from it. I've occasionally noticed in rare cases that materials just don't load, which could possibly be related to this

    Code (CSharp):
    1. TriLibCore.General.ContextualizedError`1[TriLibCore.AssetLoaderContext]: A contextualized error has occurred. ---> System.IO.IOException: Sharing violation on path C:\Users\blah\4e139548-ccc6-4db4-ad81-8e90b75d585c\BANH VONG MIN.obj
    2.   at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.Boolean anonymous, System.IO.FileOptions options) [0x0019e] in <567df3e0919241ba98db88bec4c6696f>:0
    3.   at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode) [0x00000] in <567df3e0919241ba98db88bec4c6696f>:0
    4.   at (wrapper remoting-invoke-with-check) System.IO.FileStream..ctor(string,System.IO.FileMode)
    5.   at TriLibCore.AssetLoader.LoadModel (TriLibCore.AssetLoaderContext assetLoaderContext) [0x0008a] in D:\XXX\Assets\TriLib2\TriLibCore\Scripts\AssetLoader.cs:944
    6.   at TriLibCore.General.ContextualizedAction`1[T].Invoke () [0x00000] in <9bb61b4ef3ac4693bc443100b73a3842>:0
    7.   at TriLibCore.Utils.ThreadUtils+<>c__DisplayClass0_0`1[T].<RunThread>b__0 () [0x00011] in <9bb61b4ef3ac4693bc443100b73a3842>:0
    8.    --- End of inner exception stack trace ---
     
    Last edited: Nov 3, 2020
  16. icefallgames

    icefallgames

    Joined:
    Dec 6, 2014
    Posts:
    75
    Also, is it possible for the onError callback for AssetLoader.LoadModelFromFile to include the AssetLoaderContext? Even in error cases, we're relying on the customContextData that is passed to LoadModelFromFile.
     
  17. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    Just fixed these issues. The fix will be included in the next update.
     
  18. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    Gonna try changing the permission.
     
  19. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    It does include the AssetLoaderContext when it is available, but not every method from the loading process receives the AssetLoaderContext. I will review the workflow and check if I can add the reference to AssetLoaderContext in missing places.
     
  20. ina

    ina

    Joined:
    Nov 15, 2010
    Posts:
    1,084
    Is there a way to leave the zip file open in assetloadercontext in OnMaterialsLoad?
    leaveOpen
     
  21. ina

    ina

    Joined:
    Nov 15, 2010
    Posts:
    1,084
    Any update?

    Also it looks like .Filename and .Basepath return as null for assetLoaderContext in OnMaterialsLoad in URL example ...
    zipFile.name is also null... but looping thru zipentry seems to get the names of the files inside
     
  22. ina

    ina

    Joined:
    Nov 15, 2010
    Posts:
    1,084
    Having a lot of difficulty trying to load materials and textures manually from the zip file returned in assetLoaderContext in OnMaterials Load...

    Keep getting issues like

    "Cannot access a closed Stream." for Stream zipStream = zipFile.GetInputStream(e) ... when looping through zipEntries in zipFile

    or

    An error ocurred while loading your Model: System.ObjectDisposedException: Cannot access a closed Stream.

    Code (CSharp):
    1.         // loads materials and textures manually if needed
    2.         var zipLoaderCustomContextData = (ZipLoadCustomContextData)assetLoaderContext.CustomData;
    3.         // var zipFile = zipLoaderCustomContextData.ZipFile;
    4.          var stream = new ReadSeekableStream(zipLoaderCustomContextData.Stream,8);
    5.         stream.Seek(0, SeekOrigin.Begin);
    6.         var zipFile = new ZipFile(stream,true);
    7.         var filename = zipFile.Name; print(filename);
     
  23. ina

    ina

    Joined:
    Nov 15, 2010
    Posts:
    1,084
    When I try to access the GetInputStream() for a zipentry, i get this error - have tried both from URL and also the local file system load

    `An error ocurred while loading your Model: System.ObjectDisposedException: Cannot access a disposed object.
    Object name: 'Stream has been closed'.`
     
  24. LR-Developer

    LR-Developer

    Joined:
    May 5, 2017
    Posts:
    109
    Hello,

    I have a Unity 2020.1.8 project with TriLib. It loads GLB files from filesystem.

    When I run in Unity editor, everything works perfect!

    My build is started as a process from a WPF .NetCore 3.1 project and is shown in a WPF content control.

    The unity complete build with the unity project executable is in a subfolder to the wpf executable, the wpf executable starts it in the subfolder as a process.

    Everything is working great but Trilib in this case! Interprocess communication with BestHTTP works perfect, I can see scene and canvas etc.

    But as soon as I open the first GLB, I get this error message in my Log Console I added to find the error:

    SystemDLLnotfoundException assimp at ....

    upload_2020-11-4_11-35-3.png

    How do I fix this? I copied all source dlls from
    \Assets\3rdParty\TriLib\TriLib\Plugins\Windows\x86_64
    to my build subfolder
    \TitanUnityClient\Titan_Data\Managed

    but it does not seem to help.

    Can you please help me? Thanks a lot!
     
  25. andyz

    andyz

    Joined:
    Jan 5, 2010
    Posts:
    2,268
    Hi the importer is working great but has odd warnings in the editor console when I build to win64 (have not even imported URP as in HDRP):
    Code (CSharp):
    1. System.Windows.Forms.dll assembly is referenced by user code, but is not supported on StandaloneWindows64 platform. Various failures might follow.
    2. UnityEditor.BuildPlayerWindow:BuildPlayerAndRun()
    3. Script attached to 'UniversalRPMaterialMapper' in scene '' is missing or no valid script is attached.
    4. UnityEditor.BuildPlayerWindow:BuildPlayerAndRun()
     
  26. LR-Developer

    LR-Developer

    Joined:
    May 5, 2017
    Posts:
    109
    I guess I got it working changing the project / build settings. Need to try more.

    PS: It is working in manual build, too, but failing when I use my DevOps build.

    The DevOps build does not seem to use the playersettings I set in the editor...

    Is there something I need to set in the player settings in my build script?

    Thanks!
     
    Last edited: Nov 4, 2020
  27. LR-Developer

    LR-Developer

    Joined:
    May 5, 2017
    Posts:
    109
    I found the difference (the interesting one that helps):

    My manual build has a subfolder "Titan_Data".
    This folder has 3 subfolders: Managed, Plugins, Resources.
    The DevOps Build has of course also subfolder "Titan_Data".
    But the Plugins subfolder is missing there!

    It contains the following files:
    upload_2020-11-4_16-1-25.png

    Can anybody tell me why the "editor build" takes this files into the build, while my devops build does not?
    If I copy them to my DevOps build, everything is working fine!

    Thanks...
     
  28. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    Hi!
    The plugins are added automatically, depending on the destination platform when compiling with the Unity Editor.
    I haven't used DevOps yet, maybe someone who has used it could help.
     
    LR-Developer likes this.
  29. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    Hi!
    I will check it out.
     
  30. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    I will check it out, thanks.
     
  31. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    If you set the assetLoaderOptions.CloseStreamAutomatically to false, it should not close the Stream
     
  32. ina

    ina

    Joined:
    Nov 15, 2010
    Posts:
    1,084
    After a day of debugging
    ended up implementing my own downloader saving to persistentStorage and using your local file model loader...

    wish i knew there was this switch! when are the documentation going to be up?
     
  33. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    Probably tomorrow
     
  34. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
  35. icefallgames

    icefallgames

    Joined:
    Dec 6, 2014
    Posts:
    75
    Does AssetUnloader need a [SerializeField] for the _id member? I'm trying to diagnose some problems I'm seeing and trying to figure out how it's supposed to work.

    But basically, if I clone an object at runtime, it's AssetUnloader._id will always be 0. If I then Destroy it, it will decrement the counter for AssetUnloaders[0], which is not what I think is supposed to happen?

    Basically, I want to only destroy the assets when the last object that uses them has been destroyed.
     
  36. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    This is exactly what AssetUnloader does, this id is unique when you load a model.
    When you instantiate this model, it will keep the same id and the resources will be unloaded only when the last model be destroyed.
     
  37. icefallgames

    icefallgames

    Joined:
    Dec 6, 2014
    Posts:
    75
    But that's not what happens. If I clone an object (via GameObject.Instantiate(original)), the clone will have _id = 0.

    Scenario:
    1) Load model A. It will have AssetUnloader with id 0
    2) Load model B. it will have AssetUnloader with id 1
    3) Make a clone of model B. It will have AssetUnloader with id 0 (this is what I think is wrong)
    4) Destroy the original B from step 2.
    Result: The clone from step 3 loses its materials.
     
  38. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    Gonna check it out.
     
    icefallgames likes this.
  39. niallmc

    niallmc

    Joined:
    Sep 3, 2015
    Posts:
    44
    @rickomax hey, thanks for the great asset!

    Have a quick question, I purchased TriLib and included it in a project, there is a second team member on the project

    I pushed my changes with Git to GitHub - the other member pulled this down but is having issues with trilib: "trilib was unable to find native plugins"

    Do I need to purchase a second seat for this other team member to be on this project even if they will not directly be using trilib?
     
  40. andyz

    andyz

    Joined:
    Jan 5, 2010
    Posts:
    2,268
    Is this fixed yet?
     
  41. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    I see nothing wrong in letting other team members working with TriLib files as long as the files don't be used in other projects or changed and included in other projects.
    Regarding the GitHub issue, if you followed the GitHub instructions and extracted the TriLib native plugins Zipped file on the project folder, it should work fine.
    Make sure both of your projects have the same files and also make sure both you are working on the same operating system and Unity version.
     
  42. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    Hi!

    Not yet, I apologize for the delay as I am working on the FBX loader to improve memory usage and it is taking a lot of time and effort.

    This library is not used by the TriLib package, so it could be a mistake on "using" statements.
    A quick search could not find this inclusion on any TriLib source file or library, but I will double-check it before releasing the next update.
     
  43. andyz

    andyz

    Joined:
    Jan 5, 2010
    Posts:
    2,268
    OK, but a new 2019 LTS project will show the "System.Windows.Forms.dll assembly is referenced by user code, but is not supported on StandaloneWindows64 platform. Various failures might follow.
    UnityEditor.BuildPlayerWindow:BuildPlayerAndRun()" message on building to win64 (with .net4)
    (also the import of trilib2 shows up a few warnings - nothing very harmful).

    What is required in .net4, could any cut down version of TriLib2 use just .net2?
     
  44. GmaxHD

    GmaxHD

    Joined:
    Nov 23, 2020
    Posts:
    4
    Hi @rickomax and to all community, i'm working on a project using TriLib and now i have a problem, i hope that someone can help me.
    Pratically i have to pass the downloaded object via TriLib to another GameObject variable situated in another script that allowes me to instantiate an object in a specific position of a marker via AR Foundation. So basically i've tried to do a simple reference between the two scripts and instantiate in my variable the downloaded object situated in OnMaterialsLoad() but this didn't work, my variable results empty.

    Some Code :
    Code (CSharp):
    1. IEnumerator DownloadSelectObject()
    2.     {
    3.  
    4.      
    5.         var assetLoaderOptions = AssetLoader.CreateDefaultLoaderOptions();
    6.         string uri;
    7.         uri = data.link;
    8.         Debug.Log(uri);
    9.         var webRequest = AssetDownloader.CreateWebRequest(uri);
    10.         AssetDownloader.LoadModelFromUri(webRequest, OnLoad, OnMaterialsLoad, null, null, null, assetLoaderOptions);
    11.        
    12.  
    13.  
    14.  
    15.          void OnLoad(AssetLoaderContext assetLoaderContext)
    16.         {
    17.             // The root loaded GameObject is assigned to the "assetLoaderContext.RootGameObject" field.
    18.             // If you want to make sure the GameObject will be visible only when all Materials and Textures have been loaded, you can disable it at this step.
    19.          
    20.             myLoadedGameObject = assetLoaderContext.RootGameObject;
    21.             myLoadedGameObject.SetActive(false);
    22.  
    23.            
    24.  
    25.  
    26.         }
    27.  
    28.         // This event is called after OnLoad when all Materials and Textures have been loaded.
    29.         // This event is also called after a critical loading error, so you can clean up any resource you want to.
    30.         void OnMaterialsLoad(AssetLoaderContext assetLoaderContext)
    31.         {
    32.             // The root loaded GameObject is assigned to the "assetLoaderContext.RootGameObject" field.
    33.             // You can make the GameObject visible again at this step if you prefer to.
    34.             myLoadedGameObject = assetLoaderContext.RootGameObject;
    35.             myLoadedGameObject.transform.localScale = new Vector3(0.01f, 0.01f, -0.01f);
    36.             myLoadedGameObject.transform.position = new Vector3(0f, -0.4f, 0);
    37.          
    38.             objectToInstantiate = myLoadedGameObject;
    39.             objectToInstantiate.SetActive(false);
    40.            
    41.  
    42.            
    43.  
    44.         }
    45.  
    46.      
    47.        
    48.         yield return null;
    49.      
    50.     }
    This is a coroutine in my OggettoHandler script and OnMaterialsLoad there is an assignment of myLoadedGameObject in a game object variable objectToInstantiate so now i want to pass this variable to another script. This one :
    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4. using UnityEngine.XR.ARFoundation;
    5. using UnityEngine.Experimental.XR;
    6. using UnityEngine.XR.ARSubsystems;
    7. using System;
    8.  
    9. public class ARTapToPlaceObject : MonoBehaviour
    10. {
    11.  
    12.     public OggettoHandler objhand; //this is the reference to the script OggettoHandler where Trilib load the object
    13.     public GameObject ObjectToPlace;
    14.     public GameObject placementIndicator;
    15.     private ARRaycastManager aRRaycastManager;
    16.     private Pose placementPose;
    17.     private bool placementPoseIsValid=false;
    18.     void Start()
    19.     {
    20.         aRRaycastManager = FindObjectOfType<ARRaycastManager>();
    21.      
    22.     }
    23.  
    24.  
    25.     void Update()
    26.     {
    27.         UpdatePlacementPose(); // function fo the update of the position
    28.        UpdatePlacementIndicator(); // function fo the update of the marker
    29.  
    30.         if (placementPoseIsValid && Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
    31.            {
    32.      
    33.             PlaceObject(); //where i have to pass the downloaded object by TriLib
    34.        
    35.            
    36.       }
    37.        
    38.     }
    39.  
    40.     public void PlaceObject()
    41.     {
    42.        
    43.      
    44.         ObjectToPlace = Instantiate(ObjectToPlace= objhand.objectToInstantiate, placementPose.position, placementPose.rotation);
    45.         ObjectToPlace.SetActive(true);
    46.        
    47.  
    48.  
    49.     }
    I've tried to do ObjectToPlace = objhand.objectToInstantiate but i have poor results, ObjectToPlace results empty perhaps due to my still immature knowledge of Unity or i think that the variables present in OnLoad() and OnMaterialsLoad() maybe are local variables so on the outside of this method are null. I hope that someone can help me, thank you :)
     
  45. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    Hi!

    It is not possible to downgrade TriLib to .NET 2.
    I can't point out everything from .NET 4 that I use at the moment.
    There are some third-party libraries TriLib is using which require .NET 4 as well.
     
  46. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    Hi!

    Maybe you are losing your object reference because you're putting everything inside a closure.
    Try moving your OnLoad and OnMaterialsLoad methods to your class, removing them from the DownloadSelectObject method closure.
    Also, your method doesn't need to be an IEnumerator in this case. TriLib will automatically handle the download with an inner enumerator, so you can call it from a simple void method.
     
    GmaxHD likes this.
  47. GmaxHD

    GmaxHD

    Joined:
    Nov 23, 2020
    Posts:
    4
    Thank you @rickomax for the answer but i tried and the problem persist, now my script without closure is like that :
    Code (CSharp):
    1.  public class OggettoHandler : MonoBehaviour
    2. {
    3.  
    4.     public GameObject objectToInstantiate;
    5.     public OggettoData data;
    6.     public GameObject myLoadedGameObject;
    7. public void OnClick()
    8.     {
    9.  
    10.      
    11.         var assetLoaderOptions = AssetLoader.CreateDefaultLoaderOptions();
    12.         string uri;
    13.         uri = data.link;
    14.         Debug.Log(uri);
    15.         var webRequest = AssetDownloader.CreateWebRequest(uri);
    16.         AssetDownloader.LoadModelFromUri(webRequest, OnLoad, OnMaterialsLoad, null, null, null, assetLoaderOptions);
    17.  
    18.  
    19.  
    20.  
    21.         void OnLoad(AssetLoaderContext assetLoaderContext)
    22.         {
    23.             // The root loaded GameObject is assigned to the "assetLoaderContext.RootGameObject" field.
    24.             // If you want to make sure the GameObject will be visible only when all Materials and Textures have been loaded, you can disable it at this step.
    25.  
    26.             myLoadedGameObject = assetLoaderContext.RootGameObject;
    27.             myLoadedGameObject.SetActive(false);
    28.  
    29.  
    30.  
    31.  
    32.         }
    33.  
    34.         // This event is called after OnLoad when all Materials and Textures have been loaded.
    35.         // This event is also called after a critical loading error, so you can clean up any resource you want to.
    36.         void OnMaterialsLoad(AssetLoaderContext assetLoaderContext)
    37.         {
    38.             // The root loaded GameObject is assigned to the "assetLoaderContext.RootGameObject" field.
    39.             // You can make the GameObject visible again at this step if you prefer to.
    40.             myLoadedGameObject = assetLoaderContext.RootGameObject;
    41.             myLoadedGameObject.transform.localScale = new Vector3(0.01f, 0.01f, -0.01f);
    42.             myLoadedGameObject.transform.position = new Vector3(0f, -0.4f, 0);
    43.  
    44.              objectToInstantiate= myLoadedGameObject;
    45.              objectToInstantiate.SetActive(false);
    46.  
    47.  
    48.         }
    49.  
    50.         Debug.Log("Object:" + objectToInstantiate.name);
    51.     }
    Now onClick start the download and yes you're right, the coroutine is not necessary.
    I tried to log the objectToInstantiate and it result always null outside i receive in the log "
    UnassignedReferenceException: The variable objectToInstantiate of OggettoHandler has not been assigned.
    You probably need to assign the objectToInstantiate variable of the OggettoHandler script in the inspector.
    "

    I have to add also that this script is added like component of a prefab.
    The reference in the AR script is the same like the one i already sent you.
    Where am i wrong?
     
    Last edited: Nov 23, 2020
  48. rickomax

    rickomax

    Joined:
    Jun 11, 2013
    Posts:
    683
    The code you sent still use nested methods.
    Could you send me the project containing only the download code you're trying to use so I can fix it here?
    My e-mail: contato@ricardoreis.net
     
    GmaxHD likes this.
  49. GmaxHD

    GmaxHD

    Joined:
    Nov 23, 2020
    Posts:
    4
    Yes, I have already contacted you, I will send you the project as soon as possible, thank you @rickomax
     
  50. ina

    ina

    Joined:
    Nov 15, 2010
    Posts:
    1,084
    An error ocurred while loading your Model: System.Exception: Loading downloaded models require the 'fileExtension' argument to be passed when the downloaded content isn't a Zip file.

    So I tried to use trilib to download a .fbx from URL... modified the example but that error occurs?