playcanvas / engine

JavaScript game engine built on WebGL, WebGPU, WebXR and glTF
https://playcanvas.com
MIT License
9.68k stars 1.35k forks source link

Morph Target Support #179

Closed willeastcott closed 4 years ago

willeastcott commented 9 years ago

We should add morph target support to the engine. We'll need POSITION0..7 semantics (preumably 8 is enough?), GLSL to do the interp. Obviously, we want the FBX conversion tool to read this data and write it to model JSON, but since the engine needs to work with procedurally created meshes, it's not a blocker.

issacclee commented 8 years ago

Hi Will, Just wondering have you guys made any progress regarding to supporting morph animation in Playcanvas?

willeastcott commented 8 years ago

Hi @issacclee - this work is still not scheduled. Can you give me the use case of what you want this feature for (just out of curiosity)?

issacclee commented 8 years ago

Hi @willeastcott , sorry for such late reply. I was in need for such feature because we are trying to simulate the process of turning machine cutting through metal piece which of course would require the ability to either import morph animation made by 3d tools like 3dsmax or have the engine work with procedurally created mesh.

willeastcott commented 8 years ago

Could it be achieved with skinning?

TWandrag commented 7 years ago

Hey @willeastcott. Would love to get this feature in there. I'm really new to Playcanvas and trying to push it atm to see whats achievable. Working on characters and be great to use non-boned facial animation among other things : )

westoncb commented 7 years ago

Another thing this would be useful for is custom character creation. Or similarly, producing random variations of characters for crowds etc. As an example: https://threejs.org/examples/?q=morph#webgl_morphtargets_human I may be unable to use PlayCanvas without this feature, unless it offers another way of achieving this. (I'm also a brand new user, but enjoying it very much so far!).

willeastcott commented 7 years ago

You're in luck @westoncb - we're going to look into adding support for this next. Good timing!

westoncb commented 7 years ago

Great! Glad to hear it. Meanwhile I'm going to attempt constructing a VertexBuffer manually that interpolates between some static meshes with identical topology.

bizymouse commented 7 years ago

any news on this? doing character animation without corrective shape keys is not great. There are also limitless amounts of effects easily achieved by a simple morph target that would be impossible with skinning. I didn't realize this was unsupported when I signed up because its supported in every other engine.

guycalledfrank commented 7 years ago

Hi! Morph targets are supported now. They're imported from FBX and can be used, but the API is a bit low-level, so we didn't document it properly, hoping to add a better public API later. However, you can use these methods: https://github.com/playcanvas/engine/commit/3b42ad2b470d5d7b096af52c30485174e0cd37ce

guycalledfrank commented 7 years ago

In fact you only need to use meshInstance.morphInstance.setWeight

bizymouse commented 7 years ago

Does this support animated weights from the fbx file or would that have to be re-animated via scripting now. Whats the eta on a finished implementation? Mostly i'm recreating a sketchfab type of experience that I can host myself. Its been a decent experience so far, although I would pay more to remove the requirements of using the cloud...

On Oct 25, 2017 8:00 AM, "Mr F" notifications@github.com wrote:

In fact you only need to use meshInstance.morphInstance.setWeight

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/playcanvas/engine/issues/179#issuecomment-339306948, or mute the thread https://github.com/notifications/unsubscribe-auth/AfjrO7ik4vNb4nItPscreDBWch-4DP8qks5svyLvgaJpZM4Dt3Ep .

guycalledfrank commented 7 years ago

It doesn't support loading animated weights... in fact I didn't realize there was such a thing. If they are really in the FBX, that can be implemented. For now it can be done via scripting.

bizymouse commented 7 years ago

XD yes thats part of fbx and used often

On Oct 25, 2017 12:20 PM, "Mr F" notifications@github.com wrote:

It doesn't supported loading animated weights... in fact I didn't realize there was such a thing. If they are really in the FBX, that can be implemented. For now it can be done via scripting.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/playcanvas/engine/issues/179#issuecomment-339386505, or mute the thread https://github.com/notifications/unsubscribe-auth/AfjrO00JPXCE4jn53D0qx67qicltQEe7ks5sv1_GgaJpZM4Dt3Ep .

guycalledfrank commented 7 years ago

How would you define multiple animated tracks from a single FBX though?

bizymouse commented 7 years ago

https://docs.unity3d.com/Manual/BlendShapes.html

http://answers.unity3d.com/questions/675871/exporting-keyed-blendshape-animations-from-maya.html

On Oct 27, 2017 6:43 AM, "Mr F" notifications@github.com wrote:

How would you define multiple animated tracks from a single FBX though?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/playcanvas/engine/issues/179#issuecomment-339937912, or mute the thread https://github.com/notifications/unsubscribe-auth/AfjrO08XE8Y6547LDqaq22UMVAewqd0fks5swbO_gaJpZM4Dt3Ep .

willeastcott commented 4 years ago

Hi @slimbuck. This feature request was opened long ago. Since then, rudimentary morph target support has been added to PlayCanvas. But I would describe it as incomplete. Some missing things:

So rather than close this, I'll assign to you for now until we feel it's properly fit for purpose.