Hello.
The physic morphing isn’t limited to cube and ball. In fact, I morph the mesh from a mesh colider (and not physics form), so you can change it to any form you like.
@ Jamdalu: Yes, you can use this tool for simulating muscles. Export your blendshapes as different meshes, set up the whole thing in Unity with the tool, and for example, link the rotation of the bones with the blendshapes.
@ “I am da Bawss”: I haven’t tested Mega-Fier’s, I have only seen the video demonstration of how it works. I don’t know if they use the same way for doing morphing. The main difference I see for know is that you can use multiples blendshapes in one layer in Mega-Fier’s, that will act like a sort of animation. I already had a suggestion for integrating something like that ^^.
Hi,
It is possible to use this tool for multi part models? Suppose I have some model with different parts and I want only the head to have morphs, is it possible? No offence, but morphing the whole model is a stupid idea. In most cases only some parts of model is supposed to have morphs applied. Is CP Morphing Lab able to deal above matter, or it is another useless toy?
@ Makumba666: Yes it is possible, simply have your head in a separated mesh (so separated object) and apply the morpher operator only on this part. In our live example, for the second character customisation (where you can switch between boy and girl), the head is a separated object.
@ReMix: Can your tool find the embedded BlendShapes that are inside a produced model. I’m thinking of the Evolver characters that can be exported from Evolver with facial animation BlendShapes.
(Evolver was bought by AutoDesk and is FREE right now to create characters for export!!! The prices show on the site, but are not charged. Just use the tools to transport then export.)
Could I see an example screenshot of an Evolver character BlendShapes in the tool? If this works, I will definitely purchase.
Im definitely interested in this tool. It seems that you have multiple meshes for clothing as well. Did you create morph targets for the jacket and shirt as well?
What I’d like to do is develop a character customization system in which you can change the character mesh, and select different clothing/accessories and they’ll scale appropriately. Thoughts on the best way to set this up?
@Zyxil : I’ve juste tested Evolver and imported a character to Unity. The blend shapes are contained in the fbx information, not as separated meshes like the tools requires it. So you have to import the fbx (or any other format provided by Evolver) in your 3D modeling app and separate the blend shapes in multiple meshes.
I’ve tried to do it with the Evolver example character, but for a reason I don’t understand, importing the fbx in Softimage 2012 causes the app to crash …
But if you can do like I said, it will work. I’ll try again later to make you a screenshot. (I’ll find time to do this, I should be on holiday right now )
@Seon : I wrote the extension in Unity Javascript because I’m more comfortable with it, but if you could tell me the advantages of a c# version, maybe I’ll change it.
@adamzeliasz : For the man/werewolf example, head and body are a single mesh, but for the second character customization, there are two meshes.
For your need, your’ll probably have to create blend shapes (fat, thin, muscular …) for each different clothing mesh (but you can apply multiple textures on one single mesh). Same for accessories like bracelet I think. Maybe for bags and others like this it would be easier to have an empty game object linked to the character that act like a target for placing the accessories ?
The difficulty will depend on how deep you want to be able to customize your characters, but for everything that need to change shape, this tool will help you!
@ReMix: Thanks for checking, especially on holiday!!
There are 77 blendshapes in the each Evolver model and I have a bunch of models I’d like to animate. So manually creating meshes is way too much work. If you ever get around to supporting Evolver models, please let me know. (I’ll stay subscribed to this thread.)
@Zyxil: Yes, indeed, extracting such many blendshapes to create single meshes would be painful. Maybe you could use a script in your modeling app that does this automatically ? And exports the model on the way ?
For the moment, Unity’s fbx importer doesn’t support blendshapes, to read blendshapes directly from the fbx would probably require to rewrite the importer, via a plugin I think. This is out of my knowledge for the moment, sorry :).
I’m new to scripting and I’m building a character generator. I was wondering if you have a very simple way of exporting the slider choices in “play” mode to a file that I can load later, setting all the sliders to the previous saved position?
Also, any thoughts on having a “random” button, allowing you to click it and all the sliders will be moved to various positions?
Thanks! (I also emailed you these questions as well…)
You’ve got a tough question. For saving the parameters to a file while in play mode, I think you will have to deal with something like a xml parser, or at least read/write a simple text file. Look around on the forums for xml parsing.
You can also make a custom script that contains an array of values for your character’s settings, apply this on an object, set the values and save this as a prefab, in the Resources folder for example, so you can access it from script easily.
For the random button, you can simply loop on each morphtarget an apply Random.value on the weight. It should do the work.
I haven’t the extension on my computer at home, I’ll try to get it and post some example code.
using System;
using System.Collections.Generic;
using System.Text;
using Ionic.Zip;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
namespace Demeter
{
public static class FileOperations
{
private const string __X = "CHANGETHISTEXTTOSOMETHINGELSE";
public static void SaveFile<T>(string filePath, T item)
{
using (ZipFile zipFile = new ZipFile())
{
zipFile.UseUnicodeAsNecessary = true;
//serialize item to memorystream
using (MemoryStream m = new MemoryStream())
{
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(m, item);
m.Position = 0;
ZipEntry zipEntry = zipFile.AddEntry("entry", m);
zipEntry.UseUnicodeAsNecessary = true;
zipEntry.Password = __X;
zipFile.Save(filePath);
}
}
}
public static T RetrieveFile<T>(string filePath)
{
// UnityEngine.Debug.Log("FO.RetieveFile<>() filePath: " + filePath);
// *** DotNetZip
//get the stream from the archive
using (MemoryStream m = new MemoryStream())
{
using (ZipFile zipFile = new ZipFile(filePath))
{
zipFile.UseUnicodeAsNecessary = true;
ZipEntry e = zipFile["entry"];
e.UseUnicodeAsNecessary = true;
e.Password = __X;
e.Extract(m);
m.Position = 0;
//now serialize it back to the correct type
IFormatter formatter = new BinaryFormatter();
T item = (T)formatter.Deserialize(m);
return item;
}
}
}
}
}