Commit Graph

238 Commits (033a7c90c43552b20464e33c09ac3aa2c1a2f872)

Author SHA1 Message Date
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 f0783e2a1e Add fbx support (1/2)
Add dependencies for fbx format exporter.
2018-10-17 11:06:45 +08:00
Jeremy Hu 7fa29dcc48 Fix texture generation 2018-10-16 08:04:08 +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 a81a5daaca Not generate texture by default
Because of thekla_atlas crash on some meshs, need improve or find a alternative for uv unwrap.
2018-10-11 16:03:23 +08:00
Jeremy Hu 4ea497caf8 Fix unnecessary mesh regeneration while locked 2018-10-11 10:49:44 +08:00
Jeremy Hu 4c6dc1594f Fix texture cann't unselect 2018-10-11 10:40:35 +08:00
Jeremy Hu a2770ecd8e Change texture painter clip expand joint style to round from miter 2018-10-10 22:42:55 +08:00
Jeremy Hu eeff771a3b Optimize texture generating time 2018-10-09 21:01:04 +08:00
Jeremy Hu 5f2a46be9c Avoid unnecessary mesh regeneration while only texture map changed 2018-10-09 17:17:44 +08:00
Jeremy Hu 73d20da08f Make better result to seamless texture
Fix parts vertices' connectivity in the uv unwrapping code.
2018-10-09 15:05:20 +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 7de9b61de7 Remove generated trivial seam triangles 2018-10-05 23:54:12 +08:00
Jeremy Hu 9c0da8f38f Replace the render with PBR
In this commit, another PBR render, come from website: https://learnopengl.com/PBR, also included as shaders/pbr-joey.frag
2018-10-05 15:37:01 +08:00
Jeremy Hu f7b5fb1c6a Add PBR support
Now can configure metalness and roughness for parts, however, the PBR render isn't enabled in the code currently.
2018-10-04 20:51:01 +08:00
Jeremy Hu 5c25d7d4f8 Move shader from source code to separated folder 2018-10-03 13:52:35 +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 e2f44dded7 Fix normal interpolation on export 2018-09-23 11:34:35 +08:00
Jeremy Hu d6b38f5750 Fix part cache not update when add new node 2018-09-23 10:41:47 +08:00
Jeremy Hu 2156855444 Add show if opengl core profile used in about widget 2018-09-23 09:02:08 +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 a419a0fb7a Fix pose edit 2018-09-21 16:14:37 +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 f163522aa2 Change hotkey 'Tab' to 'E'
The Tab key conflicts with system's hot key. Now, should use 'E' to switch the selection from one color to the other.
2018-09-19 00:04:23 +08:00
Jeremy Hu 7341259a48 Fix opengl widget messing up while dock top level changed 2018-09-18 22:23:28 +08:00
Jeremy Hu d3e28e88f2 Fix mesh render update blocking main UI 2018-09-18 15:20:51 +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 2f4102cedc Merge branch 'animation' 2018-09-18 11:25:07 +08:00
Jeremy Hu c64743f2f2 Fix rig skinning weights, add pose configure UI. 2018-09-18 11:17:35 +08:00
PowPingDone e2d9fc1c32
Fix Compile Error 2018-09-16 14:23:54 -05:00
Jeremy Hu 8dcabeae72 Fix build 2018-09-14 18:28:03 +08:00
Jeremy Hu 360ed52a5c Fix build 2018-09-14 18:06:07 +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 a9b379a77a Add radius lock 2018-09-08 12:20:31 +08:00
Jeremy Hu 1988118179 Add smooth shading toggle 2018-09-07 20:51:33 +08:00
Jeremy Hu 94d63237e7 Add multiple select on parts tree 2018-09-07 18:13:55 +08:00
Jeremy Hu 0bf64eeb2d Fix build 2018-09-06 23:29:26 +08:00
Jeremy Hu 3c2d4f7480 Add mesh smooth slider
This feature could be useful for smooth one component and soften the seam of combination,
This commit also include a crash fix about incorrect use of CGAL.
2018-09-06 23:04:59 +08:00
Jeremy Hu 87b0f70460 Add mtl export with obj 2018-09-05 11:14:36 +08:00
Jeremy Hu 9a3dfb8ff2 Add view rotation 2018-09-03 15:05:05 +08:00
Jeremy Hu 10160285b8 Fix mesh cache
When origin changed by user, all parts should be regenerated.
2018-09-02 10:24:39 +08:00
Jeremy Hu fe401a5f13 Change connect nodes behavor.
If hovered target is not editable, create new node instead of connect existed nodes.
2018-09-02 07:48:38 +08:00
Jeremy Hu 6693365543 Fix invalid mesh cache 2018-09-01 18:18:28 +08:00
Jeremy Hu 717c8ef266 Add select by component 2018-09-01 10:17:26 +08:00
Jeremy Hu b945ab9725 Fix focus lost 2018-09-01 08:47:10 +08:00
Jeremy Hu 80ccbc51bf Validate points before doing convex hull 2018-09-01 07:17:36 +08:00
Jeremy Hu 7320568d1d Fix crash on union empty meshs 2018-08-31 23:49:32 +08:00
Jeremy Hu 1bac6c4c53 Fix undo/redo on color picking 2018-08-31 20:19:56 +08:00
Jeremy Hu df9c8e8e3c Add wrap button to enable use controlled convex hull generation for part.
This feature could be useful to generate complex mesh as part.
2018-08-31 12:54:32 +08:00
Jeremy Hu 6bab154cf5 Fix component remove 2018-08-31 09:40:53 +08:00
Jeremy Hu 134078fc05 Fix direction key conflict with zoom function 2018-08-29 23:42:04 +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 f89117fd91 Fix typo 2018-06-30 19:37:46 +08:00
Jeremy Hu 5001453ce3 Add joint constraint 2018-06-30 18:46:23 +08:00
Jeremy Hu 51bf40de01 Add rotate along single node.
If multiple nodes or end effector node been selected and rotate, the behaves remain the same as before, however, if single node in the middle been selected and rotated, all the children of this node will be rotated. This could be useful to rotate the tail or leg from joint.
2018-06-29 14:55:32 +08:00
Jeremy Hu 057d615275 Fix leg start orientation 2018-06-29 11:28:37 +08:00
Jeremy Hu e8aabef903 Merge branch 'walk' 2018-06-28 21:18:43 +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 4fa276c9e2 Remove g++-4.9 requirement 2018-06-27 08:19:14 +08:00
Jeremy Hu 4679381512 Add XZ switching menu item 2018-06-21 16:24:18 +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 cddc4c15cc Make root node and direct children as breathe scaling target if no spine node marked. 2018-06-16 20:04:17 +08:00
Jeremy Hu 22910028e9 Add parts subtract operation.
This is useful for making hole surface. For example, without subtraction, it's difficult to make a bucket like mesh, now, you just need to copy and paste the nodes, invert it from the Parts List Panel Context Menu, then down scale and move up a little bit.
2018-06-16 14:41:52 +08:00
Jeremy Hu 35635534c2 Fix typo 2018-06-15 22:54:19 +08:00
Jeremy Hu 082b470f8a Fix block caused by delete operation 2018-06-15 19:54:13 +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 f2625a7ca2 Add more align options.
- Add local align.
- Fix crash in multiple nodes collapse case.
2018-06-02 17:34:48 +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 473fa9f7d9 Add alternative method to zoom rendered model.
- Add "ALT + <Minus | Equal>" combined key to zoom rendred model besides the wheel event.

Special thanks to @glasyalabolas for https://github.com/huxingyi/dust3d/issues/4
2018-05-24 15:08:57 +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
Jeremy Hu 6268852e59 Fix copy/paste selection state.
In the previous version, the nodes get selected and copied, without lost selection after new nodes pasted.
This commit fix this problem. Now, the old nodes lose selection while new pasted nodes gettting selected.
This feature will make the following use case much easier:

Extrude:
Select some nodes, copy, paste then scale.
2018-05-12 18:07:46 +08:00
Jeremy Hu 429e2c98c1 Fix symmetry.
The symmetry feature is not funtional when there is no turnaround reference sheet loaded.
This should fix the problem by load a empty background image.

Thanks @xtvjxk123456 for addressed this issue, https://github.com/huxingyi/dust3d/issues/6
2018-05-11 23:06:54 +08:00
Jeremy Hu 0cecff71c7 Separate ambient occlusion baker to a different phase.
This is mainly for resolving the baking time consuming issue when running in software OpenGL.
Compare to normal OpenGL which would only take seconds to bake, software OpenGL take minutes to bake a complex model.
Separating the baking phase would allow the user to export the result without baking.
2018-05-11 13:27:29 +08:00
huxingyi db0f0b3ed2 Fix ubuntu build 2018-05-10 23:18:22 +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 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
Jeremy Hu d930ceec96 Add alt key to enable rendered model rotate and move.
ALT + LEFT BUTTON: Rotate rendered model
ALT + SHIFT + LEFT BUTTON: Move rendered model

Thanks @Zireael07 and @glasyalabolas for proposing this feature.

Closes #4
2018-04-23 10:14:32 +08:00
Jeremy Hu 9643920515 Fix UI too small and crash on bad mesh problem.
The model generating speed may become slightly slower than the previous version because of the extra checks.

This closes #1, and closes #3
2018-04-23 08:10:01 +08:00
Jeremy Hu ca1b938e2c Highlight all profiles when mouse hovered
Implement the feature as been proposed in this video:
https://www.youtube.com/watch?v=YBnEQk_5D70

Thanks Serapth and his amazing youtube channel - Gamefromscratch for proposed this feature

Serapth's Reddit: https://www.reddit.com/user/Serapth
Gamefromscratch Youtube Channel: https://www.youtube.com/channel/UCr-5TdGkKszdbboXXsFZJTQ
2018-04-21 08:23:27 +08:00
Jeremy Hu 71e1a51b43 Fix export y-flipped.
> Another problem is your model seems to have an inverted Z export.
> by https://www.reddit.com/user/Skullfurious

Node coord system: Screen

Mesh generation coord system:
x-axis: --- Main Profile (Red)  --->
z-axis: --- Side Profile (Green) --->
y-axis: UP

Thanks the follow reddit users:
https://www.reddit.com/user/Skullfurious
2018-04-20 20:00:57 +08:00