Announcement

Collapse
No announcement yet.

RuntimeMeshImportExport - Import and Export runtime created static meshes using Assimp library

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    [RELEASED] RuntimeMeshImportExport - Import and Export runtime created static meshes using Assimp library

    Description
    Import and export of static mesh data at runtime. Can be used in conjunction with ProceduralMeshComponent or RuntimeMeshComponent. Both, import and export is possible synchrounous and asynchrounous. The plugin uses Assimp library to achieve this (Assimp). Using Assimp library also means huge list of supported file formats for import as well as export.

    The Plugin makes use of v5.0 of Assimp (Assimp Github). Means there is no custom build of Assimp used in the Plugin which allows you to freely create your own Assimp build or Update to a newer version.

    This plugin started from RuntimeMeshLoader Github and was hugely modified, improved and added async support.

    Features
    • Sync and Async import and export
    • Thanks to Assimp the plugin supports lots of formats
    • Useable via Blueprint and C++
    • Normalize the import (crunch the imported scene into 100cm cube)
    • Combine meshes and/or sections on import
    • Debug and Release Binaries
    • Import of Material data (see below)
    Media






    Download






    Material Import
    -Material import is supported since version 1.3
    • Strong dependency on exporting application, file format support and what assimp imports from the file
    -Texture files are supported as separate files and embedded
    • Embedded: Must be an embedded format (jpg, png, ...)! Raw pixel data is not supported at the moment
    • Separate: The texture must be relative to the mesh file (best case is within the same folder)
    -Supported Texture formats: Everything the ImageWrapper module of Unreal supports
    • PNG, JPEG, JPG, GrayscaleJPEG, BMP, ICO, EXR, ICNS
    • NOTE: Yes, Unreal is able to handle TGA files, but ONLY IN EDITOR! Thus not supported with the plugin.
    -Materials are only imported as parameters. You must provide a Material that accepts these parameters. A function is provided to create a loggable string representation of the imported material data.
     
    Spoiler
    • ScalarParam:
     
    Spoiler
    • VectorParam:
     
    Spoiler
    • TextureParam:
     
    Spoiler

    - Successful Test Object: https://free3d.com/3d-model/tooth-pa...del-81794.html (Note: OBJ-Import: NormalMap is imported as TexHeight)


    Changes
     
    Spoiler



    Examples
    Click image for larger version  Name:	Arrow.png Views:	48 Size:	1.9 KB ID:	1654104
    Last edited by Rumbleball; 02-19-2020, 04:53 PM.
    NodePrefabs | PluginBuilder | NotificationBackbone | WidgetBox | RuntimeMeshImportExport | DebugWidget | SteamWorkshopAccessor

    #2
    Example Project
    (EngineVersion 4.23, requires the Plugin installed to the engine)
    https://drive.google.com/open?id=1Z5...0GYBWcmRf1kulO

    Example Code
    Click the Images to enlarge them

    Import

    Click image for larger version  Name:	SimpleImport.jpeg Views:	0 Size:	415.4 KB ID:	1689309

    Click image for larger version  Name:	MaterialExample.png Views:	0 Size:	357.2 KB ID:	1716810

    Export

    Click image for larger version  Name:	image_170993.png Views:	1 Size:	419.8 KB ID:	1654093

    Click image for larger version  Name:	image_170994.png Views:	1 Size:	538.6 KB ID:	1654094
    Last edited by Rumbleball; 02-03-2020, 08:04 PM.
    NodePrefabs | PluginBuilder | NotificationBackbone | WidgetBox | RuntimeMeshImportExport | DebugWidget | SteamWorkshopAccessor

    Comment


      #3
      Hows progress on this plugin going? Coming from what you posted on the runtime mesh loader github pull request

      Comment


        #4
        Thanks for your interest. We wanted to release with UE4.23, but just yesterday we needed to make an addition. I try to make the Marketplace push on Monday, though it might take awhile for the Marketplace team to check it.
        NodePrefabs | PluginBuilder | NotificationBackbone | WidgetBox | RuntimeMeshImportExport | DebugWidget | SteamWorkshopAccessor

        Comment


          #5
          Ok cool! Cant wait to check it out

          Comment


            #6
            Hi. Is this plugin completed?

            Comment


              #7
              Originally posted by Shikhar Arora View Post
              Hi. Is this plugin completed?
              still playing pingpong with the marketplace team. Currently in the legal stage cause of third party code.
              NodePrefabs | PluginBuilder | NotificationBackbone | WidgetBox | RuntimeMeshImportExport | DebugWidget | SteamWorkshopAccessor

              Comment


                #8
                I'm happy to announce the release of the Plugin. It is now available for Unreal 4.21+ and makes use of the Assimp v5.0 release.
                NodePrefabs | PluginBuilder | NotificationBackbone | WidgetBox | RuntimeMeshImportExport | DebugWidget | SteamWorkshopAccessor

                Comment


                  #9
                  I just discovered it on the Marketplace and brought it instantly. Fantastic.
                  I need clarification about how you handle materials from obj. What is the "Material Index" output in RuntimeMeshImportMeshInfo?
                  I only need the name of the material, no values, only the string name.

                  Comment


                    #10
                    Originally posted by VKleinMP View Post
                    I just discovered it on the Marketplace and brought it instantly. Fantastic.
                    I need clarification about how you handle materials from obj. What is the "Material Index" output in RuntimeMeshImportMeshInfo?
                    I only need the name of the material, no values, only the string name.
                    Much of that is taken over from the originating Github project. The Index (Tooltip seems to be messed up) is the element ID if the material when opening a static mesh viewer.
                    Click image for larger version

Name:	Unbenannt.png
Views:	549
Size:	272.0 KB
ID:	1689016

                    It is basically useless as original objects are not retained in the import. Yes, the material name should be added to the result. Maybe return that more properly (Keep sections of a mesh together in the returned data).
                    This might cause some trouble with making the import Uniform on request, but will see to it tomorrow.
                    NodePrefabs | PluginBuilder | NotificationBackbone | WidgetBox | RuntimeMeshImportExport | DebugWidget | SteamWorkshopAccessor

                    Comment


                      #11
                      Update pushed to the Marketplace. See Changelog in #1 and changed Import example in #2.
                      NodePrefabs | PluginBuilder | NotificationBackbone | WidgetBox | RuntimeMeshImportExport | DebugWidget | SteamWorkshopAccessor

                      Comment


                        #12
                        Originally posted by Rumbleball View Post
                        I'm happy to announce the release of the Plugin. It is now available for Unreal 4.21+ and makes use of the Assimp v5.0 release.
                        Thanks a lot man! One quick question - does it work with Skeletal meshes? I saw on your plugin's marketplace page that "Only raw mesh information is supported" so I think skeletal meshes may not be possible. Basically I'm trying to import a skeletal mesh at runtime which means the skeleton as well. If it's not possible straightforward, is there any workaround that you can enlighten me with please?
                        Thanks again!

                        Comment


                          #13
                          Shikhar Arora No, it does not work out of the box. Assimp itself does support skeletal meshes, so you can extent the plugin. Most of the work is done, should not be so much trouble to add skeletal to it.

                          Though the actual problem you will encounter is, that there is no runtime skeletal mesh component like ProceduralMeshComponent/CustomMeshComponent/RuntimeMeshComponent for StaticMesh. MAYBE you can just spawn a USkeletalMesh at runtime, feed it the imported data and give it to the USkeletalMeshComponent, but that something behind my knowledge.

                          I personally did not use any SkeletalMeshes, so can't help you there.
                          NodePrefabs | PluginBuilder | NotificationBackbone | WidgetBox | RuntimeMeshImportExport | DebugWidget | SteamWorkshopAccessor

                          Comment


                            #14
                            Originally posted by Rumbleball View Post
                            Shikhar Arora No, it does not work out of the box. Assimp itself does support skeletal meshes, so you can extent the plugin. Most of the work is done, should not be so much trouble to add skeletal to it.

                            Though the actual problem you will encounter is, that there is no runtime skeletal mesh component like ProceduralMeshComponent/CustomMeshComponent/RuntimeMeshComponent for StaticMesh. MAYBE you can just spawn a USkeletalMesh at runtime, feed it the imported data and give it to the USkeletalMeshComponent, but that something behind my knowledge.

                            I personally did not use any SkeletalMeshes, so can't help you there.
                            Ok I'll look into Uskeletal mesh possibilities. Thanks a lot!!
                            ​​​​​​​

                            Comment


                              #15
                              Originally posted by Rumbleball View Post
                              Update pushed to the Marketplace. See Changelog in #1 and changed Import example in #2.
                              Yes, you delivered 1.1 bulls eye. Perfect (for my actual project) material handling and you fixed a strange import problem (same geometry imported differently in different Unreal levels) I've also encountered in my project. BIG THANKS.

                              Comment

                              Working...
                              X