8000 GitHub - Phylliida/ResoniteUnityExporter: A Unity Plugin to easily export Avatars or Worlds from Unity into Resonite. Scroll down for tutorial
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Phylliida/ResoniteUnityExporter

Repository files navigation

ResoniteUnityExporter

A Unity Plugin to easily export Avatars or Worlds from Unity into Resonite.

It does this by:

  • Grabbing the raw mesh, material, blendshape, bone, dynamic bone, etc. data directly from unity,
  • Sends that to Resonite via inter-process communication (using a memory mapped file),
  • Decodes directly in Resonite

This lets us avoid any of the limitations of converting to an intermediate file first.

Tutorial

Installing the unity package

(If you have the old version, go to Assets and delete the ResoniteUnityExporter folder)

Click Window at the top of the screen, then select Package Manager.

press package manager button

Press the + in the top left, and click add package from git URL...

add package from git url

Then add the url from the package repo:

https://github.com/Phylliida/ResoniteUnityExporterPackage.git

and press Add.

which git url to use

Click the new ResoniteUnityExporter tab at the top of the screen and click Open Unity Resonite Exporter.

open unity resonite exporter

You should see a menu pop up.

Adjust the Avatar/World Name as needed, and follow the instructions to set your near clip.

Adjust name and near clip

A correctly set near clip should be as small as possible while having nothing in the way.

For example:

Correct near clip

Now you are ready to export your content to Resonite.

There are two options from here:

Run ResoniteUnityExporterStandalone.exe

This is a standalone program that uses Resonite libraries to convert your avatar/world into a .resonitepackage.

You can later copy paste the .resonitepackage in game to import your avatar.

This is easier to get setup and does not require any mods.

See Running Resonite Unity Exporter Standalone

Install ResoniteUnityExporterMod

This is a ResoniteModLoader mod for Resonite.

This mod allows Resonite to communicate directly with Unity.

When you press "Export to Resonite" your avatar/world will pop up in the world you are in.

See Installing Resonite Unity Exporter Mod

Running Resonite Unity Exporter Standalone

Go to the releases page

https://github.com/Phylliida/ResoniteUnityExporter/releases

  • Pick the most recent release
  • Scroll down unitil you see Assets, expand it
  • Download ResoniteUnityExporterStandalone.exe

Download ResoniteUnityExporterStandalone.exe

  • Run it.
  • It'll ask for your Resonite location, select Resonite.exe and press Ok.

(It needs this to use Resonite's libraries. This helps it be hopefully more forward compatible)

Now it should print out lots of text as it initializes things.

Eventually the text should calm down, once it does that you are ready to export your avatar/world!

Go to Exporting to Resonite

Installing Resonite Unity Exporter Mod

Go to the releases page

https://github.com/Phylliida/ResoniteUnityExporter/releases

  • Pick the most recent release
  • Scroll down unitil you see Assets, expand it
  • Download rml_mods.zip

Download rml_mods.zip

Now you need to install Resonite Mod Loader. The easiest way is to use Resolute.

Once it is installed, navigate to your Resonite directory. It's probably something like:

C:\Program Files (x86)\Steam\steamapps\common\Resonite

In there, create a rml_mods folder if it doesn't already exist.

Now unzip rml_mods.zip and still all the .dll files into rml_mods.

It should look like this when you are done:

All the dlls are in the rml_mods folder

(there may be more files if you also have other mods installed)

Now Unity can talk to Resonite. Go to Exporting to Resonite

Exporting to Resonite

You are ready to export to Resonite if, either:

  • ResoniteUnityExporterStandalone.exe is running, or
  • You've installed Resonite Unity Exporter Mod and are running Resonite

The Unity Plugin will then be able to connect to Resonite. It should look something like this

Connected to Resonite

Press Export to Resonite to export your content!

This may take some time, be patient.

Material mappings

Because Resonite does not have custom materials, your materials will need to be converted to standard resonite ones.

See the Materials tab to choose how you'd like this conversion to be done.

Stuff supported

  • Worlds and Avatars
  • Mesh Renderer
  • Skinned Mesh Renderer
  • Blend shape values
  • Relative transforms and names of all slots
  • Bones, including:
    • Auto-rename to help Resonite (modified from ResoniteImportHelper)
    • Null bones are supported (they just get a default bone made for them on the Resonite side)
  • Dynamic Bone Chains and Colliders
  • VRIK/Humanoid rig import
  • Auto create and use Avatar Creator (including better auto-hand align)
  • VRChat build hooks (including VRCFury hooks)
  • Non-Destructive Modular Avatar Framework hooks
  • Position and Scale Constraints
  • Most material properties (including textures), and you can choose which supported Resonite material to map to
  • Lights (mostly, as much as I can with Resonite, baked lighting todo)
  • LODGroups
  • Colliders

Todo

  • Aim, Parent, LookAt, and Rotation constraints
  • Baked lighting
  • Reflection probes
  • Toggles
  • Animations
  • Better liltoon support (see 18)
  • Linux Support
  • Option to put tooltip anchor on tip of first finger
  • Particles
  • Sounds
  • Why hips rotated on certain avatars with null bones but only for Standalone? (maybe has to do with hack to avoid discord crash?)
  • Asset bundle not working?
  • Skybox
  • Remember last resonite package save location
  • Dynamic bone plane colliders (not sure how to do this...)

Project Structure

ExampleUnityProject is a Unity project that has everything installed that you'll need, feel free to open it up and add your avatar's unitypackage.

ResoniteUnityExporterShared contains the data structures used to represent mesh, texture, etc. data. This library is used by the unity library and also by the mod and standalone.

ImportFromUnityLib is the library used in the Mod/Standalone, it contains the core of the code to take the data and import it into Resonite.

ResoniteUnityExporterMod is the code for the Resonite mod, that uses ImportFromUnityLib to make the avatar appear in whatever world you are in.

ResoniteUnityExporterStandalone is a standalone custom headless server, you can't connect to it and it's anonomyous. This also uses ImportFromUnityLib, it's used to load resonite libraries needed to make a .resonitepackage. This is also useful for debugging since startup time is much faster.

https://github.com/Phylliida/ResoniteBridgeLib is a dependency of this library, it contains the inter-process communication and serialization code.

I want to suggest a change

Feel free to submit a PR! Contributions are welcome.

Also feel free to make a gh issue if you encounter an issue and I'm happy to help u debug.

Credits

ResoniteImportHelper's kisaragi marine was helpful for figuring out how to call VRChat hooks and bone NOIK issues

Cloud_Jumper helped me address the issue when bones were null and a few other issues

yoshi1123_ helped me address non-symmetric hands/avatars that are holding something, and a few other issues (see releases)

AlphaNeon helped me get VRChat World api support working

Venport pointed me to constraints and helped me with those

troyBORG helped with some of the head position debugging and many other things

ariel_emerald helped me with initial idea generation, some brainstorming, encouragment, and finding many various issues

About

A Unity Plugin to easily export Avatars or Worlds from Unity into Resonite. Scroll down for tutorial

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages

0