Commit Graph

577 Commits (1f34b95776d13220ae065dbacc93a90d1b589d49)

Author SHA1 Message Date
Jeremy Hu 9231ce9162 Fix pose setting: Height above ground level.
Root bone will have heightAboveGroundLevel parameter to indicate the distance between ground and foot. It's a relative value, comparing with the distance of the first spine head position and foot.
2018-11-11 00:05:49 +08:00
Jeremy Hu 205a9f512f Fix paste shortcut for pose editor 2018-11-10 08:21:07 +08:00
Jeremy Hu 69b0fbd68d Add switch chain side action for pose editor
It's very easy to place the wrong side limbs on the pose graphic editor, especially when the reference sheet is not clear. Switch chain side will switch the YZ for the paired chain which contains the selected node. For example, if you select one node from LeftLimb1, and choose the switch chain side from context menu, all the bones, has the name pattern LeftLimb1_Joint* and RightLimb1_Joint*, the YZ of origin will be swapped.
2018-11-10 07:56:58 +08:00
Jeremy Hu ddc837b47c Smooth first and last frame of pose sheet 2018-11-10 07:06:27 +08:00
Jeremy Hu 8a2298bfcb Smooth pose sheet
Simple smooth algorithm: average the frame transform with neiboring frames.
2018-11-09 23:42:20 +08:00
Jeremy Hu bbe36fde68 Change dialog save button action
Don't close dialog when save button got clicked
2018-11-09 23:07:26 +08:00
Jeremy Hu fff39b0835 Add multiple frames per pose support
Usually one pose consists of one frame, however, sometimes multiple frames per one reference sheet for a serial of action could be very useful, such as a sprite sheet. Multiple frames per pose is different with one motion, one motion could contains multiple poses. Currently, the duration of one frame is fixed to 0.042s, it's based on the 24 frames per second calculation.
2018-11-09 11:20:48 +08:00
Jeremy Hu a551995235 Fix inconsistent result between pose editor preview and motion generation
Each bone's head and tail positions are been kept in the pose parameters, that means there are repeated info and we can resolve the bone's head position from parent's tail position if there isn't any positions info been kept for one bone.
2018-11-08 16:01:25 +08:00
Jeremy Hu f0379740ca Fix wrong middle bone index 2018-11-07 23:46:26 +08:00
Jeremy Hu 73d4676675 Make spine bones in the middle of bind vertices vertically or horizontally 2018-11-07 23:12:40 +08:00
Jeremy Hu 01b164cdae Fit control bones in pose canvas
Add scale factor to make all the bones fit in the canvas of pose editor
2018-11-07 22:48:24 +08:00
Jeremy Hu 1543c1a6c7 Fix rig
Improve the quality of main body resolving.
2018-11-07 16:02:55 +08:00
Jeremy Hu 2c8975b1cd Unify rig type of generic and tetrapod as animal
Marks also reduced to four types: Neck, Limb, Tail and Joint.
2018-11-07 00:26:19 +08:00
Jeremy Hu d72738feb1 Fix build 2018-11-06 06:41:39 +08:00
Jeremy Hu 70f075a36e Rewrite pose editor
This commit include lots of changes for pose editor.
Before, we use buttons to represent the transform controller for bones;
Now, we use nodes and edges to represent the bones, just like the nodes and edges for representing the guide spheres for mesh generating. There are advantages by doing this. Firstly, The edit UI for both mesh and pose are unified, secondly, it is possible to set a reference sheet for pose editing now, this is very important.
This new pose editor is inspired by the Eadweard Muybridge's work.
2018-11-05 23:47:21 +08:00
Jeremy Hu a4aefdd308 Make a abstract class for document: SkeletonDocument
This is mainly for reusing the SkeletonGraphicsEditWidget for other purpose, such as the new pose editor.
2018-11-03 16:09:42 +08:00
Jeremy Hu e7249db089 Add translation parameter for pose editor 2018-11-02 13:43:01 +08:00
Jeremy Hu 0d45d65b98 Fix build 2018-11-02 10:30:17 +08:00
Jeremy Hu bd358d4de7 Fix generic rig
Limb bones generation failed when two mark joints sit near with each other, because resolving the joint bone's connectivity failed on finding the first neighbor.
This commit fixs this issue by trying to find a nearest joint node.
2018-11-02 07:48:17 +08:00
Jeremy Hu 1c17e25b69 Add new rig type: Generic
The difference between tetrapod and generic is that, with tetrapod, all the bones need to be generated are know before mark, so if some marks are missing, there would be a message prompted; with generic, you can mark what ever marks as you wish, and the algorithm is try to create a spine and the limbs growing on the spine, that means, the generated skeleton would be some kind of creature.
2018-11-01 23:24:06 +08:00
Jeremy Hu ca07b3ef6f Fix hand pose
Considering the hand direction when calculate the base plane of rotation.
2018-10-28 17:00:41 +08:00
Jeremy Hu 8615223eeb Export motions to FBX
Now motions can export to AutoDesk FBX file. Tested in Unity 2017.4.1f1
2018-10-28 13:22:10 +08:00
Jeremy Hu d00c26ca08 Export motions to glTF(.glb)
Each motion will be exported as an animtion of glTF
2018-10-27 10:29:51 +08:00
Jeremy Hu db33a5e662 Adjust the example model: camel 2018-10-27 08:06:59 +08:00
Jeremy Hu 79200827f5 Cleanup
Refactor outcome. Move processes of outcome to separated files, and leave the outcome class as clean as possible.
Normal export in glb format is been fixed.
Ambient occlusion baker is been temporarily removed.
2018-10-27 07:04:45 +08:00
Jeremy Hu 62632dc168 Fix material widget 2018-10-25 23:28:10 +08:00
Jeremy Hu 438c488f5a Support glTF binary format export
The normals haven't fix yet, this commit is mainly preparing for the next coming commits about animation export.
The glTF text format abandoned for the binary format.
2018-10-25 17:18:04 +08:00
Jeremy Hu 84607fba01 Expand the render model mouse control area
Click the middle mouse on the area out of the canvas can also rotate or move the render model.
2018-10-25 15:03:51 +08:00
Jeremy Hu 955ebce009 Fix build 2018-10-25 14:46:21 +08:00
Jeremy Hu 637356e895 Fix undo
Add a crc64 hash check for history keeping to avoid repeated snapshot.
Besides, before, there is a logic error in the undo implementation, which recover the most recent snapshot from undo stack, so user need undo twice and at the second undo get the expected result. This incorrect behavior got fixed.
2018-10-25 14:27:59 +08:00
Jeremy Hu 208d2a0166 Cleanup
Many source file name and data type are prefixed by "skeleton" before, now all are refactored.
The class MeshResultContext represents the outcome of mesh generation before, now we have material, pose and animation, so we just rename it as Outcome.
2018-10-25 08:19:38 +08:00
Jeremy Hu dbc82fa8f1 Fix mini button display issue
The part highlight background hide the subdiv mini button before, this commit resolve it by move the highlight left a little bit.
2018-10-24 22:08:42 +08:00
Jeremy Hu ee20aff397 Improve shortcuts
Shortcuts implementation now use QShortcut instead of using the raw key event.
Besides, hold spacebar to temporarily enter drag mode also implemented in this commit, this is very useful in zoom mode.
2018-10-24 21:44:21 +08:00
Jeremy Hu 71ccb2b71f Fix mouse handling for render model
Before we use a tricky way to share mouse event between model render widget and model edit widget, which forward the event from render widget to edit widget. This will cause some problem, such as the scroll bar of edit widget would not work when it covered by the render model.
Now the mouse event is totally disabled in the render widget, and when there is a need we forward it from edit widget.
2018-10-24 16:54:18 +08:00
Jeremy Hu f2849a020f Fix qt warning
Try to call deleteLater on a nullptr would cause qt print warning message: "QCoreApplication::notify: Unexpected null receiver"
2018-10-24 06:51:33 +08:00
Jeremy Hu d663876c5c Rewrite the motion manager
Curve editor has been removed from this commit.
Instead of let user edit customized curve for motion, we provider presets. It's much more easy to add motion than before.
2018-10-23 22:57:47 +08:00
Jeremy Hu 09200c920d Fix rig result doesn't reset after document changed 2018-10-22 07:56:56 +08:00
Jeremy Hu 34e2ac1fef Export rig to fbx
Tested in Blender 2.79 and Unity 2017.4.1f1
2018-10-22 07:29:01 +08:00
Jeremy Hu 0320be1c15 Fix build 2018-10-20 21:58:20 +08:00
Jeremy Hu ec47c20919 Fix incorrect normal after texture auto unwrapped
glTF normal export temporarily disabled.
2018-10-20 21:30:59 +08:00
Jeremy Hu debdd79a7a Fix build 2018-10-20 17:29:57 +08:00
Jeremy Hu 6f471e7678 Smooth normal based on angle
Currently, if the angle of two faces are less than 60 degrees, the normal is not averaged.
This feature greatly boost the realistic look of the model.
2018-10-20 16:42:29 +08:00
Jeremy Hu 096c107775 Add fbx export support (2/3)
Currently, only mesh exported. Tested in Blender 2.79 and Unity 2017.4.1f1 Personal (64bit).
2018-10-20 13:07:11 +08:00
Jeremy Hu 02963ebf8b Calculate part preview in the same normal method with final model 2018-10-19 13:08:02 +08:00
Jeremy Hu 2f32158940 Replace the average normal with angle and area weighted normal
See details here: http://www.bytehazard.com/articles/vertnorm.html
2018-10-19 07:57:39 +08:00
Jeremy Hu 328f26429b Optimize deform
see 3ff01306d0
2018-10-18 15:43:58 +08:00
Jeremy Hu c06a23d52e Fix build 2018-10-17 12:53:18 +08:00
Jeremy Hu b2a77caffc Fix build 2018-10-17 12:35:15 +08:00
Jeremy Hu 660e3d6a58 Fix fbx build 2018-10-17 11:59:21 +08:00
Jeremy Hu 0608e2af1c Fix uv unwrapper
UV unwrapper may run into infinite loop if the parametrization failed with some infinite value.
2018-10-17 11:19:17 +08:00