Hi there,
I’m currently working on a UE4 implementation to interactively sync Maya’s… let’s say “level building data”.
I started the original m2u (short for Max/Maya to UDK) over a year ago with a friend as a student-project, as the name says, for UDK.
It was quite a hassle communicating with UDK via the windows-UI
But UE4 has full source code access, so this should be much more powerful in the long run. To get an Idea of what I’m talking about:
features you see in the video:
- syncing the persp viewport camera
- fast fetching selected objects from the Editor (uses ExportSelected to FBX)
- syncing transforms of objects
- duplicating of objects
- hiding/showing of objects (a bit buggy)
- deleting objects
- parenting of objects (still very WIP)
- renaming objects (unused and used names)
I’m actually working on this for my master’s thesis, but that means I have to write the nonsensical text-stuff soon, so I won’t have much time to actually improve the code until the end of August.
I will keep you posted, and I would like to hear from you guys what you think of it, what you think the most necessary features would be and so on.
what’s under the hood?
m2u itself is a modular python script
the UE4 frontend is a c++ editor plugin
communication between the python and UE4 side is done via a TCP port
Maya? I’m a Max-user!
Sorry to hear that
My focus is currently only on Maya->UE4. But m2u was planned to be completely modular. We had a very basic 3DsMax implementation for the UDK version. Technically it is possible to write an implementation for any 3d-Authoring Program out there as long as the calls to the python library with the necessary data is made. Maybe my Friend who worked with me on the first m2u will get onboard when he has more time to spare, maybe some other guy will make a Max-implementation when the whole project is a little bit less WIP, we will see
Can I take a look at your code?
Of course, I have nothing to hide.
The m2u python scripts are here: https://bitbucket.org/m2u/m2u/
I’m currently working on the feature/ue4 branch, the develop branch will always be updated when certain features have been added or bugs have been fixed. The master branch will only be updated when a bigger set of features is working as expected on mac and windows. So, when you want to try this, always check out the develop branch
The plugin code is here: https://bitbucket.org/m2u/m2uue4plugin
This code is very monolithic at the moment. I don’t have time to do nice refactoring currently, but I definitely will!
EDIT:
More videos:
Feature Status:
working:
- syncing the persp viewport camera
- fast fetching selected objects from the Editor (uses ExportSelected to single FBX file)
- syncing transforms of objects (now correct even with modified pivots)
- duplicating of objects
- hiding/showing of objects (due to the nature of how isolate select works in maya, this may not always be 100% correct)
- deleting objects
- renaming objects (unused and used names)
- syncing display layers (a bit buggy sometimes)
work in progress:
- a modular pySide based UI (some of the pipeline-tasks depend on this)
- allow and auto-detect Maya-Y-up space
- getting ‘known’ meshes from the file system (importing the fbx file associated with a static mesh by checking the project structure on the file system. This allows to build levels in maya, and send the whole stuff to UE at once)
- sending ‘new’ meshes from maya to UE (export to fbx, create asset, place in level. Thought further, this allows to quickly edit meshes and get the changes in the engine with one click)
- getting ‘unknown’ meshes which are not on the file system but exist as static meshes in UE
- parenting and grouping of objects
- support for other objects than meshes (namely lights)
- making mass operations like selection and duplication faster (currently only one operation per tick)
to be investigated some day (no idea when I will come to this):
- transferring collision data (UCX prefixed meshes)
- transferring dependent textures (automatically import/export)
- sending skeletal mesh posing data (interactively get posing response in engine viewport when editing animations in maya)
- syncing cameras on playback (for creating camera paths in maya and seeing an interactive preview in the editor)
- two way interactive sync for simple stuff like selection (select something in UE will select the same in Maya)
- …
Please tell me what you think of it