Commit Graph

128 Commits (1bca404be42d5147d676db928d035880b26ec545)

Author SHA1 Message Date
Jeremy Hu 2c8b32978a Add contributors 2018-12-02 08:30:32 +09:30
Jeremy Hu 4981d2d078 Release 1.0.0-beta.5 2018-12-02 08:25:30 +09:30
Jeremy Hu f0334c3eec Fix crash on uvunwrapping #18 2018-12-01 23:21:53 +09:30
Jeremy Hu 25b68d2a71 Release 1.0.0-beta.3 2018-12-01 14:56:17 +09:30
Jeremy Hu 7a244c2a16 Release 1.0.0-beta.2 2018-12-01 14:14:53 +09:30
Jeremy Hu 96486f33be Change version number to 1.0.0-beta 2018-12-01 10:56:23 +09:30
huxingyi 889c11ecef Add new combine mode: Inflation
This mode turn the component to functional nodes instead of mesh construction. The mesh generated before this component will be proportional deformed.
2018-11-15 22:01:20 +08:00
huxingyi ab97615bea Add "combineMode" configuration for component to replace the "inverse" attribute
Currently, only support "Normal" and "Inversion" modes, "Normal" means normal mesh union, "Inversion" means mesh diff, it behaves like subtract itself from the previous mesh.
2018-11-14 21:21:45 +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 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 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 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 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 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 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 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 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 f0783e2a1e Add fbx support (1/2)
Add dependencies for fbx format exporter.
2018-10-17 11:06:45 +08:00
Jeremy Hu a4a734a67b Repleace the uv unwrapping library with simpleuv
https://github.com/huxingyi/simpleuv
2018-10-15 23:02:31 +08:00
Jeremy Hu 1623d7d782 Update to the latest thekla_atlas 2018-10-11 08:56:09 +08:00
Jeremy Hu 5f2a46be9c Avoid unnecessary mesh regeneration while only texture map changed 2018-10-09 17:17:44 +08:00
Jeremy Hu 7eb5a325a0 Add MetalicRoughness material manager
Besides adding the PBR material manager, this commit hide some unnecessary features such as toggle wireframes and toggle normal smooth.
Add a regenerate button to indicate mesh is generating by showing a spiner, user can click this button to regenerate if the final result is not good.
Please note that, we generate the texture map by default compared to before we only generate texture map when user export glTF result. Current uvunwrap library cann't handle bad mesh very well, so it will crash on the wires model.
2018-10-09 10:19:12 +08:00
Jeremy Hu 997d9efd75 Fix build 2018-10-02 13:18:35 +08:00
Jeremy Hu b02ffedb9d Merge branch 'curveeditor' 2018-10-02 13:09:04 +08:00
Jeremy Hu ee92472027 Add motion manager
Added motions tab, hermite curve editor, quaternion overshoot blend and so on.
2018-10-02 12:59:30 +08:00
Jeremy Hu dbb23b9029 Rename library name meshlite to meshlite_ffi 2018-09-28 10:45:39 +08:00
Jeremy Hu 6ffbdc9c7b Add mesh seam combine algorithm
Not enable by default, should enable the weldEnabled in the SkeletonDocument class.
2018-09-22 18:31:02 +08:00
Jeremy Hu e22a6de6cb Add poses list view
Added Add, modify, delete, copy, and paste poses. The paste menu for nodes not show up also got fixed in this commit.
2018-09-21 15:10:18 +08:00
Jeremy Hu 1ab3d16bd4 Fix parts render crash
Before, app crash on some machines as been reported in #15 and #16, and cannot easily be reproduced on other machines, such as a virtual box guest system, which make it very hard to trace the root cause.
Now, the offline render is totally removed from the code base, instead of offline-render to image then show the image, we can directly show the parts model in the parts tree using normal opengl widget, and the result looks better than before.
2018-09-18 14:22:29 +08:00
Jeremy Hu c64743f2f2 Fix rig skinning weights, add pose configure UI. 2018-09-18 11:17:35 +08:00
Jeremy Hu 48bc8df5c3 Add auto-rig
This is the second version of auto-rig, differing from the first version, the user should pick up a rig type, unless no rig will be generated. Currently, only supports Tetrapod without tail. Export as glTF format to test this feature.

This commit also achive better quality quads than before.
2018-09-14 17:45:05 +08:00
Jeremy Hu 623dda6ecf Replace parts list with parts tree and remove immature features 2018-08-27 16:50:40 +08:00
Jeremy Hu 5001453ce3 Add joint constraint 2018-06-30 18:46:23 +08:00
Jeremy Hu 289fe1fbf4 Add experiment walk animation clip generation.
- Fix intermediate bones remove;
- Add locomotion controller;
- Add head, tail node marks for animation.
2018-06-28 21:17:21 +08:00
Jeremy Hu aeca656c76 Remove trivial bones
- Fix intermediate bone weights
- Remove trivial bones
- Introduce bullet physics engine
2018-06-19 23:49:25 +08:00
Jeremy Hu e26095981b Add rotate operation to menu
- Add rotate 90/-90 degree to facilitate nodes editing
- Enable docs.dust3d.org domain
2018-06-15 17:58:46 +08:00
Jeremy Hu d05c43d714 Add animation clip: Idle
This is an experiment test of animation clip generation. Mark leg and spine nodes to enable it or check it with the latest mosquito.ds3 example;
Skeleton offset is been fixed in this commit.
2018-06-15 13:34:41 +08:00
Jeremy Hu 0829ef818a Add animation clip generator
- Fix skeleton weights
- Add rig controller
- Add animation clip generator
- Implement basic experiment animation(squat)
2018-06-11 22:24:25 +08:00
Jeremy Hu c4505ba788 Add intermediate bone remover.
- Remove intermediate bones when user marked leg nodes
- Add flags to toggle gltf comment and normal output
- Fix face normal
- Adjust the skeleton bone mesh radius
2018-06-01 12:38:16 +08:00
Jeremy Hu 6c10ad1ee2 Add node mark.
User can mark selected nodes as specified body location explictly. This will help the rigging step generating more reasonable result, also prepared for the future animation clip generation.
2018-05-30 09:51:38 +08:00
Jeremy Hu df98193091 Add end-effector pulling (Shift + Left Button on end-effector).
- Implement CCD (Cyclic Coordinate Descent) IK (Inverse Kinematics) algorithm
- Add end-effector pulling operation, this would be useful when you want to pull a group of nodes in line to align straight or mimic curl.
2018-05-24 09:44:40 +08:00
huxingyi 8a6a2a6640 Fix windows build 2018-05-10 03:21:24 -07:00
Jeremy Hu 078543b80e Add ambient occlusion baker.
- Add @ands 's lightmapper to generate ambient occlusion image.
- Refactor parts list UI.
- Add interpolated normal to .gltf export result.
- Remove bones preview and texture preview window(Integrated to export preview UI).
- Add export preview UI.
2018-05-10 17:16:22 +08:00
huxingyi d7fb742d7b Fix build 2018-05-07 10:16:58 -07:00
Jeremy Hu dc33bfd0a3 Fix build 2018-05-08 00:27:11 +08:00
Jeremy Hu 1376af237b Add auto uv unwrapping.
Use https://github.com/Thekla/thekla_atlas to generate the texture.
This commit still have some issues, some faces not satisfy thekla_atlas in some cases.

- Add texture preview widget.
- Fix single node black color issue.
- Export texture in .gltf file.
- Fix node order random issue in mesh generation.
2018-05-08 00:08:19 +08:00
Jeremy Hu 3fef6c4463 Add auto-generated skeleton(skinned mesh) and glTF exporter.
And added a CONTRIBUTORS file to list the users who have done great work to help Dust3D become better, thank you!

@Alistair401
@hdu
@shadowndacorner
@Skullfurious
@RSDuck
@xtvjxk123456
@Zireael07
@glasyalabolas
@dlpatri

PS. please feel free to make a pull request or email me to change the ID or contact info listed in the CONTRIBUTORS file, and if you are mistakenly been missed in the file, please MUST edit this file and make a PR or email me.
2018-04-30 19:31:09 +08:00
Jeremy Hu 331051879d Add parts color configure and round-able configure.
- Add End-Round Type Toggle to Parts List Panel (Thanks @Alistair401 for proposing this feature).
- Add Parts Color Picker to Parts List Panel.
- Add Parts List Panel Context Menu to facilitate multiple parts visible toggle.
- Add Material Export to Export Menu.
- Prepare the source code for the auto skeleton exporter and uv unwrapper.
2018-04-26 10:23:22 +08:00
huxingyi 1b38833823 Add Ubuntu 16.04.4 LTS build example 2018-04-21 16:13:00 +08:00
Jeremy Hu c61665c8a4 Add reference guide link to help menu 2018-04-18 21:18:10 +08:00
Jeremy Hu 486c313d7f Change version from alpha1 to unversioned for test build 2018-04-18 11:42:45 +08:00
Jeremy Hu ce41e654fb Add thickness parameter for part.
It's showed as mini button on part list widget, this parameter can be use to make fish body like mesh.
2018-04-17 21:13:32 +08:00
huxingyi c68f88ff1e Fix appveyor 2018-04-13 22:04:41 -07:00
huxingyi 70f9f7c003 Fix appveyor 2018-04-13 21:16:29 -07:00
Jeremy Hu 2d3cdd8f60 Add build docs for mac 2018-04-13 22:54:05 +08:00
huxingyi 6bd08068b2 Fix qt pro for windows 2018-04-13 06:03:42 -07:00
Jeremy Hu 2d9f64ebc2 Collect version info macros in one header file 2018-04-11 16:34:51 +08:00
Jeremy Hu 38fb0c022a Add main menu.
- Add about window,
- Add acknowlegements window,
- Add multiple documents support.
2018-04-10 15:59:20 +08:00
Jeremy Hu f47148a537 Cleanup and reset initial render angle 2018-04-09 23:10:23 +08:00
Jeremy Hu 8ee0dee3db Remove carve and other no-use deps 2018-04-08 16:05:12 +08:00
Jeremy Hu af451bd5ab Introduce new UI,
Introduce part list,
Add log viewer,
Add QtAwesome icons.
2018-04-07 16:44:39 +08:00
Jeremy Hu b99e0db0b2 Seperate the shader program and mesh binder to seperated source files 2018-04-02 14:05:06 +08:00
Jeremy Hu f48d6bd5f5 Seperate mesh union as single source file 2018-03-29 17:10:59 +08:00
Jeremy Hu 09d21e8935 Add skeleton snapshot support (Prepare for undo/redo feature) 2018-03-26 20:41:46 +08:00
Jeremy Hu 4c9767835f Export working model as obj 2018-03-20 15:56:49 +08:00
Jeremy Hu de0fa135fb Add CGAL library to compare with Carve 2018-03-18 07:43:04 +08:00
Jeremy Hu 425962921e Add carve library to support better mesh boolean operations 2018-03-17 17:21:17 +08:00
Jeremy Hu ff19efa188 Add project file(.ds3) reader and writer 2018-03-15 23:40:30 +08:00
Jeremy Hu 130ffdae79 Add parts loader and saver 2018-03-14 23:22:00 +08:00
Jeremy Hu 5dbff8b9e3 Add styled tab header 2018-03-14 14:43:16 +08:00
Jeremy Hu 20f4b669bb Add icons 2018-03-13 20:49:24 +08:00
Jeremy Hu ce20e49883 Add turnaround image loader 2018-03-13 14:39:36 +08:00
Jeremy Hu 5b597b0f0c Add skeleton to mesh generation(finished other side) 2018-03-12 17:41:16 +08:00
Jeremy Hu d3e82ea306 Add skeleton edit UI 2018-03-12 00:02:15 +08:00
Jeremy Hu 283e76b1b6 Add base UI layout 2018-03-11 11:18:24 +08:00
Jeremy Hu 7d8e8c4bc5 Test QOpenGLWidget example with meshlite 2018-03-10 14:57:14 +08:00