Giter Club home page Giter Club logo

cvrfury's Introduction

Contributors Forks Stargazers Issues LGPL2 License


Table of Contents
  1. Warnings
  2. About The Project
  3. Getting Started
  4. Feature Support
  5. Roadmap
  6. Contributing
  7. License
  8. Contact
  9. Acknowledgments
  10. Project tools

⚠️ Warnings ⚠️

Currently this software is only compatible with versions of VRC Fury older than 1.744, as that version introduced a breaking change in the components and this will need new stubs creating for them before they can be supported

⏳ Long Running Tasks

If you have animations with large numbers of armature bones being animated in them, then expect long run times on the ArmatureLink module as it will have to re-write them all. TLDR: If its still showing as processing and you can see disk activity, then it is not hung as it may appear to be, just let it run, and come back to it in a few minutes

(back to top)

About The Project

The aim of this project is to create a tool kit that can process VRCFury supported content for use in ChilloutVR.

Note this project is in a alpha state and not ready for any use yet (though functions listed as such should work now).


See the VRCFury Webpage for more info on the project that inspired this one.

(back to top)

Getting Started

TBC

Prerequisites

Note the following should be auto installed to the project by adding this package

  • com.unity.nuget.newtonsoft-json: 3.0.2
  • com.unity.vectorgraphics: 2.0.0-preview.21

Installation

  1. In unity open the Package Manager window
  2. Click the plus button in the top left of that window and choose the Add packages from git URL option
  3. Paste in the git url of this repo https://github.com/NovaVoidHowl/CVRFury.git
  4. Click the add button

The script should then be ready to use.

(back to top)

Feature Support

Icon Key:

✔️ = Feature active/supported.
⚙️ = Implementation/review in progress
❌ = Feature pending implementation.
🔼 = High priority.
🔽 = Low priority.
❔ = Feature pending review.
🚫 = Feature will not be supported.

The following table gives a breakdown of what features are supported for import/install.
Note at this time there is no native config UI for CVRFury modules (save the dev debug interface)

Feature Data Import Supported Install Supported Notes
ObjectToggleAction ✔️ ✔️
MaterialAction ✔️ ✔️
BlendShapeAction ✔️
FxFloatAction ✔️ ❌🔽
AnimationClipAction ❔🔽 ❔🔽
ShaderInventoryAction ❔🔽 ❔🔽
PoiyomiUVTileAction ❔🔽 ❔🔽
MaterialPropertyAction ❔🔽 ❔🔽
ScaleAction ✔️
BlockBlinkingAction ✔️ ✔️
BlockVisemesAction ✔️ ✔️
FlipBookBuilderAction
Blinking
Breathing
FullController ✔️ ✔️ Note: no support for menu section triggered toggles (CVR menu is flat not tree)
Toggle ❌🔽 ❌🔽
Puppet
SecurityLock ❌🔽 ❌🔽
Talking ❌🔽 ❌🔽
Toes Puppet ❌🔽 ❌🔽
Advanced Visemes
ArmatureLink ✔️ ✔️ Note: There is currently no support for mesh vertex rewrite
BoundingBoxFix ❔🔽 ❔🔽
FixWriteDefaults ❔🔽 ❔🔽
RemoveHandGestures ❌🔽 ❌🔽
AnchorOverrideFix ❔🔽 ❔🔽
MoveMenuItem ❔🔽 ❔🔽
GestureDriver ❔🔽 ❔🔽
Gizmo ❌🔽 ❌🔽
DeleteDuringUpload ✔️ ✔️
BlendShapeLink ❔🔽 ❔🔽
SetIcon 🚫 🚫 There are no icons on CVR menus
OverrideMenuSettings 🚫 🚫 Related to VRC menu structure only
BlendshapeOptimizer ❔🔽 ❔🔽
Slot4Fix
DirectTreeOptimizer ❔🔽 ❔🔽
ShowInFirstPerson ✔️ ✔️
MmdCompatibility ❔🔽 ❔🔽
Parameter Stream 🚫 ✔️ VRC does not have Parameter stream equivalent

Things that are not included

The following are not features of this project, you will need to handle the following conversions by hand, or find a tool that can do them.

  • PhysBone to Dynamic Bone conversion
  • PhysBone to Magica Cloth (1 or 2) conversion

(back to top)

Roadmap

  • VRCExpressionParameters Converter and Stub

  • VRCExpressionMenu Converter and Stub

  • PhysBone Stubber - (just stubs them NOT a converter)

  • VRCFury stubs - pre version 1.744

  • VRCFury stubs - version and on 1.744

  • VRCFury to CVRFury data porter

  • CVRFury VRCStub to VRC Converter (potential)

  • More to come ......

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are appreciated. Please see CONTRIBUTING.md for more details.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Please see LICENSE.md for information.

(back to top)

Contact

@NovaVoidHowl

Project Link: https://repo.cvrfury.uk

(back to top)

Acknowledgments

VRCFury

This repo contains stub components (in the folder VRCFury_stub), that are derivative of the VRCFury codebase, please see https://github.com/VRCFury/VRCFury, unlike the rest of the code in this repo the VRCFury stubs are licensed under CC BY-NC 4.0

Avatars-3.0-Manager

This project makes use of the Animator Controller copying/merging logic. Please see https://github.com/VRLabs/Avatars-3.0-Manager/tree/main for details Licence MIT

(back to top)

Project tools

  • VS Code, ide
  • Pre-Commit, linting and error detection
  • Github Copilot, Code error/issue analysis

(back to top)

cvrfury's People

Contributors

novavoidhowl avatar

Stargazers

NotAKidoS avatar Alex_2Pi avatar Adam Beckingham avatar  avatar

Watchers

 avatar

cvrfury's Issues

Dynamic Bone, support for addons

Dynamic Bone, seems it hates being in a prefab and needs to be re-added/re-configured after game objects are re-parented, it does retain its settings, but the related bones end up being way off position wise like 800 units away from the model.

Note, fix for Magica Cloth 2 (already implemented) may be a good base for this

Multi avatar handling not working

If multiple active avatars in the scene have DSUs on objects under them, then it appears that only the last one in the list will get processed

Multi armature link animation path error

When there are two or more armature links per DSU then the paths end up stacking in the created animation clips.
eg

 - curve:
      serializedVersion: 2
      m_Curve:
      - serializedVersion: 3
        time: 0
        value: {x: 0, y: 0, z: 0}
        inSlope: {x: 0, y: 0, z: 0}
        outSlope: {x: 0, y: 0, z: 0}
        tangentMode: 0
        weightedMode: 0
        inWeight: {x: 0, y: 0.33333334, z: 0.33333334}
        outWeight: {x: 0, y: 0.33333334, z: 0.33333334}
      m_PreInfinity: 2
      m_PostInfinity: 2
      m_RotationOrder: 4
    path: skeleton/hips/spine/chest/shoulder_l/upperarm_l/forearm_l/hand_l/CVRF_Addon_0/[CVRF_D0]_Clock/hips/CVRF_Addon_0/[CVRF_D0]_Hip/HipRotation/HeadClone/Monitors/Keyboard

Submenu nesting support

Sometimes menus have menus under them in VRCFury are setup such that one menu has another under it (nested menus)
Need to add processing that flattens this out for the CVR menu structure

Progress indication for animation clip rewrite

If there are many animation clips/paths to rewrite, this can take some time and it may appear that process has hung.
Would be good to add some sort of progress indication for playmode (its more obvious in build mode due to unity progress bar behavior)

IsLocal bool driver

Need auto detection of use of IsLocal in the generated animator, as a cleanup step so that a layer can be added to set that bool based on #DeviceMode + parameter stream

note that IsLocal will have to be auto converted to #IsLocal on all layers as that is how CVR tags local variables

Write defaults auto fix

Need animator write defaults fix step, as mix of write defaults on/off can break animations across the whole avatar (resulting in it being locked in the motorcycle pose)

AnimationController state missing animation fix

if a state is missing an animation (ie when used just for behaviors) is can cause the avatar to end up stuck in the motorcycle pose

need to add a fixer that checks all layers for missing 'no action' animations (not on states that host blend trees)

Add support for proximity based armature link detection

This is to allow for items to be put in multiple places, ie. left or right arm/leg etc. based on the proximity of the bone to the item
Support for this is there in the DSU code (avatarTargetingMode 2 AKA proximity ), and the hook exists in ModuleInstaller_ArmatureLink.cs (line 2327), but there is no implementation of the feature yet.

Upload apply not trigger not working

looks like an multi async problem, as the module installer itself process is a coroutine
need some way to hold the CCK task while the installer does its tasks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.