Commit Graph

552 Commits (1e7057bd90c8b78b6e06ed3338b7f9ee6c767928)

Author SHA1 Message Date
Jeremy Hu 95c3607996 Fix paint mode 2019-08-17 21:02:18 +09:30
Jeremy Hu 1d0f2450df Add deforming map painter
- Short cut 'D' changed meaning: from drag mode to paint mode, drag mode icon removed, but still can use space bar to invoke drag mode.
- Brush painter directly paint on part deforming map, use shift key plus mouse wheel to change the brush size, also use shift key to change paint mode(Pull/Push).
2019-08-17 19:43:11 +09:30
Jeremy Hu da6861f6aa Fix build 2019-08-13 07:48:21 +09:30
Jeremy Hu 42f243746e Speed up mesh generation
Cache intermediate combination mesh for generation.
2019-08-12 22:47:11 +09:30
Jeremy Hu dc33e2f11c Add setTexelSize api for simpleuv 2019-08-10 23:33:49 +09:30
Jeremy Hu dacff70eaa Use Eigen to do vector math on UV 2019-08-10 23:12:08 +09:30
Jeremy Hu 13db7ee97b Add check UV 2019-08-10 07:57:26 +09:30
Jeremy Hu a6b9ac7bf1 Scale UV by area ration 2019-08-09 22:03:42 +09:30
Jeremy Hu f5a70dfd9e Segment UV by normal 2019-08-09 19:56:31 +09:30
Jeremy Hu bde3c01da0 Add 3d mouse picker 2019-08-08 20:54:33 +09:30
Jeremy Hu bc3fae63e3 Add deform map
Deform whole part according to a height map, gray(127) represent unchanged, white represent expanding, black represent shrinking.
2019-08-03 19:51:27 +09:30
Jeremy Hu f3f77bc3a8 Fix default button on Windows #41
Thanks to @joshcamas
2019-08-01 07:24:58 +09:30
Jeremy Hu e2b221533b Fix example meerkat model and disable debug output in command line 2019-07-29 17:49:01 +09:30
Jeremy Hu 7a12f78984 Fix poser failure because of incorrect translated rig bone name in Simplified Chinese. 2019-07-29 17:33:35 +09:30
Jeremy Hu 2cd3aee520 Add procedural tree to example menu 2019-07-27 17:21:45 +09:30
Jeremy Hu a833232d3c Exposure document.canvas to javascript api 2019-07-27 10:37:07 +09:30
Jeremy Hu 1f34b95776 Fix script variable inputs 2019-07-26 16:35:41 +09:30
Jeremy Hu 9261b7ca5e Add THREE.Vector3 and THREE.Ququaternion from three.js 2019-07-26 14:15:33 +09:30
Jeremy Hu af792a9bdc Add javascript variable inputs: Float, Int, Check, Color, Select 2019-07-26 10:50:32 +09:30
Jeremy Hu cc51fdafe0 Add menu: Check for Updates 2019-07-24 22:11:55 +09:30
Jeremy Hu 0b2653362a Support open/export from command line
Usage example(on MacOS):
    $ ./dust3d.app/Contents/MacOS/dust3d /Users/jeremy/Desktop/test.ds3 -o /Users/jeremy/Desktop/test.glb
    $ echo $?
2019-07-23 19:43:58 +09:30
Jeremy Hu 2c072fc083 Change script editor's text color and add new js api: document.attribute 2019-07-23 07:02:43 +09:30
Jeremy Hu fd7dbb2024 Optimize cut face endpoints sort algorithm 2019-07-22 18:24:55 +09:30
Jeremy Hu 54b1c95270 document.createVariable return float instead of string 2019-07-22 17:32:35 +09:30
huxingyi f2cc4a11e1 Fix quickjs windows build 2019-07-20 04:57:26 -07:00
Jeremy Hu 63d92e7682 Add JavaScript support
This commit introduce JavaScript as nodes generation script, to procedurally generate input nodes, which usually should draw by user on the canvas.

Powered by QuickJS (https://bellard.org/quickjs/)
2019-07-20 14:04:53 +09:30
Jeremy Hu aec5acd793 Improve intermediate nodes generation
Added Intermediates nodes sometimes will make the whole part’s mesh failed to generate. This commit add a fallback option, when mesh failed to generate, the generator will try again without the intermediate nodes added.

This feature is inspired from Nico J. Dolloso’s model (https://twitter.com/nicodoll).
2019-07-20 12:12:24 +09:30
Jeremy Hu d38737e2cb Fix mesh preview flashback
Before this commit, outdated textured preview will override the updated untextured preview. From user's perspective, sometimes, the mesh preview flashback for a short time span, although it will finally been updated to the latest.
2019-07-10 21:39:46 +09:30
Jeremy HU ab5e53fb54
Fix build error on Raspberry PI 3 Model B+ 2019-07-09 18:12:08 +09:30
Jeremy Hu 31d627bca9 Support user defined cut face per each node
Before this commit, the user defined cut face can only be set for whole part. Now each node could been configured a separate cut face and rotation.
2019-07-09 08:06:07 +09:30
Jeremy Hu 7c66e6b5d0 Sort cut face list by x position of center 2019-07-08 07:33:39 +09:30
Jeremy Hu 58b6c7d1d9 Fix build 2019-07-07 20:40:24 +09:30
Jeremy Hu 8d315e3c64 Optimize intermediate nodes cut normal.
Before this commit, the cut normal of intermediate nodes doesn't consider the original nodes' travesal direction. This will cause self intersection in some cases.
2019-07-07 20:25:42 +09:30
Jeremy Hu eb91a8a16c Prepare for cut face offset modifier 2019-07-07 15:57:58 +09:30
Jeremy Hu 820aa90406 Rename Vertex to ShaderVertex
Fix crash on hiding nodes after removing node
2019-07-04 19:06:50 +09:30
Jeremy Hu ad244c4659 Save nodes cut faces 2019-07-03 08:37:46 +09:30
Jeremy Hu 713935adb5 Save cut face transforms 2019-07-03 07:19:18 +09:30
Jeremy Hu 969a25b697 Fix crash in cut face nodes ordering
The comparison function of std::sort requires only return true when first is less than second, this is the rule of "strict weak ordering".
2019-06-29 19:12:45 +09:30
Jeremy Hu 6b8afd2493 Update language file name 2019-06-28 22:33:49 +09:30
Jeremy Hu 12fc351068 Add language: zh-CN 2019-06-27 22:14:33 +09:30
Jeremy Hu 0543e8a0be Fix default flat shading 2019-06-26 21:34:10 +09:30
Jeremy Hu 1d04e1771e Disable three nodes branch by default
Three nodes branch wrapping is very easy to fail, so disable by default.
2019-06-26 21:05:56 +09:30
Jeremy Hu 4689ed163a Sort material, pose, and motion list by name 2019-06-26 07:24:22 +09:30
Jeremy Hu 7a33fa2531 Remove neck direction match
The neck direction match is introduced for matching the human pose to a animal pose, however, current implementation will cause the neck pose not work as edited in pose editor.
2019-06-25 22:13:57 +09:30
Jeremy Hu a945612718 Fix part mesh generation variation
Before this commit, the node id and edge id changed when reload from file, then caused the uuid changing and affected the node processing order during mesh generation.
2019-06-25 21:07:17 +09:30
Jeremy Hu 83cb6383c1 Add new base normal option: Average
When this option enabled, the mesh generator will average all the base normals of nodes with radius as a weight.
2019-06-25 08:14:04 +09:30
Jeremy Hu 516df9a1b7 Add new pose setting: yTranslationScale
Normally, when pose been generated, foot is always been pulling to the ground by a y-translation. This setting could be used to scale the y-translation. It's usefull for birds fly kind of motion.
2019-06-19 22:27:38 +09:30
Jeremy Hu 3e29528ee0 Fix pose preview flicker 2019-06-19 06:36:11 +09:30
Jeremy Hu e5f45eef83 Fix pose preview 2019-06-18 08:16:59 +09:30
Jeremy Hu 56ddc1f8ee Add side visibility toggle button to pose editor 2019-06-17 22:19:08 +09:30
Jeremy Hu bc565923aa Add background blur adjustment slider to pose editor 2019-06-16 18:15:03 +09:30
Jeremy Hu 629c02adbe Fix multiple windows crash when preference change 2019-06-12 21:03:38 +09:30
Jeremy Hu 5443909c1d Add more built-in example models 2019-06-11 08:17:12 +09:30
Jeremy Hu 307965e3e8 Fix motion generator 2019-06-10 23:31:06 +09:30
Jeremy Hu e145793af0 Fix neck direction match 2019-06-10 23:11:40 +09:30
Jeremy Hu be4f9fd014 Fix last spine position 2019-06-10 22:27:51 +09:30
Jeremy Hu ec1eace6bb Match the missing bone parameters 2019-06-10 18:55:35 +09:30
Jeremy Hu 033ea5f53e Change the spine bone naming convention
When there is tail bone, the spine bone start with "Spine01" and "Spine02", this is to make the spine bone name match with none-tail bones. Why "Spine01"? Because the bone chain is ordered by name, "Spine01" and "Spine02" come before "Spine1".
2019-06-10 16:12:08 +09:30
Jeremy Hu 0b18da76ea Add bone name converter but not enable yet. 2019-06-10 15:49:35 +09:30
Jeremy Hu 6ca06f4e80 Fix rig
Fix the left and right limbs pairing algorithm
2019-06-10 10:09:30 +09:30
Jeremy Hu de88930acb Adjust smooth threshold of animation generation 2019-06-09 20:40:24 +09:30
Jeremy Hu c568d18218 Change the behavior of multiple selected nodes scaling
Before this commit, the scaling only happen on one profile, this commit force the scaling on front view and side view at the same time.
2019-06-09 14:28:09 +09:30
Jeremy Hu fac78b5e56 Fix preference color setting 2019-06-08 17:27:13 +09:30
Jeremy Hu 4955e47d76 Update pose editor node radius 2019-06-07 08:09:46 +09:30
Jeremy Hu 026059960f Fix preferences color reset 2019-06-07 06:41:55 +09:30
Jeremy Hu 54b5a9ef5e Fix one frame pose duration issue in motion editor
This commit also remove height above ground settings.
2019-06-06 23:48:48 +09:30
Jeremy Hu 0cb574b6ea Fix user defined cut face flipped normal 2019-06-05 21:52:34 +09:30
Jeremy Hu 1bb14a82a6 Fix PBR material texture glitches 2019-06-02 10:48:03 +09:30
Jeremy Hu 292d2ce507 Add none endpoint cut face (ring) 2019-06-01 23:45:57 +09:30
Jeremy Hu 4ab76b1d76 Add preferences setting and change the behavior of shift key on scale radius 2019-06-01 22:42:53 +09:30
Jeremy Hu 7eef3f9455 Add back the smooth shading toggle menu
As @Toshiwoz suggested, there is still a need for flat shading.
2019-05-30 19:58:55 +09:30
Jeremy Hu 938b6d5d6f Add color solubility setting
If one part configured color solubility, the generated color texture seam between the neighbor parts will be gradient filled using this part's color with the specified solubility.

Demo: https://twitter.com/jeremyhu2016/status/1132159910815227904
2019-05-26 08:54:24 +09:30
Jeremy Hu bb19489ee1 Add base plane constrain settings
Mesh layout and thickness adjustment are depend on base plane calculation. In this build, the base plane calculation could be limited to front plane, side plane, and so on, compare to without any limitation in previous implementation.
2019-05-20 23:08:01 +09:30
Jeremy Hu b09df89da2 Fix build 2019-05-19 13:08:20 +09:30
Jeremy Hu 8f5368a43f Add user defined cut face
Extruding shape is totally customizable now, it's not limit to predefined shapes.
2019-05-19 12:51:38 +09:30
Jeremy Hu fc341986c0 Fix texture glitchs 2019-05-12 17:45:07 +09:30
Jeremy Hu 5baf139cb6 Add "Uncombined" mode
Uncombined mode could be used to avoid generation of trivial triangles. However, the result will be none-watertight if there is an uncombined mode component.
2019-05-11 21:31:13 +09:30
Jeremy Hu d121632a98 Fix triangle extruding face center position. 2019-05-05 22:58:22 +09:30
Jeremy Hu fcfe51a28a Support customizable extruding face: Quad, Pentagon, Hexagon, and Triangle 2019-05-05 22:19:26 +09:30
Jeremy Hu 0a6736b9d2 Change RemoteIo bind ip from local host to any
This would allow other software to contact with Dust3D without limit on the same machine, however, the user still need to enable it by command line "-remoteio".
2019-03-31 09:57:18 +09:30
Jeremy Hu ea63a5ecd0 Fix missing library on windows 2019-03-31 06:45:52 +09:30
Jeremy Hu 278ac68ea6 Add Remote IO protocol specification
To enable Remote IO, run Dust3D with command line options: -remoteio
See details: http://docs.dust3d.org/en/latest/remote_io_protocol.html
2019-03-23 00:03:17 +09:30
Jeremy Hu b8c3557d9c Implement more commands for Remote IO (2) 2019-03-20 20:34:37 +09:30
Jeremy Hu 56312d0034 Implement more commands for Remote IO 2019-03-18 08:34:37 +09:30
Jeremy Hu 283df87c51 Implement notification of Remote IO 2019-03-17 23:34:12 +09:30
Jeremy Hu ceeccc7211 Start implementation of Remote IO
Finished server creation, implemented two commands: listwindow, selectwindow
Ideally, all the UI should be possible manipulated by remote IO, a local TCP/IP connection, this could be useful to make a VR front end for Dust3D.
2019-03-17 15:53:39 +09:30
Jeremy Hu a1249f5fcb Fix material preview. 2019-03-16 15:32:45 +09:30
Jeremy Hu bc3109def9 Prepare 1.0.0-beta.16 2019-03-10 11:26:54 +09:30
Jeremy Hu e2f829d3ce Make chamfer tool as a separate tool
Remove cut template customiziation.
2019-03-10 07:40:39 +09:30
Jeremy Hu 26353d530a Support onion skin in pose editor
Also add more buttons to speed up the pose editing.
Thanks @Toshiwoz for proposing this feature.
2019-03-03 09:35:13 +09:30
Jeremy Hu 8c0156bc7a Add example model: Bob
Add menu item "Open Example", open a default example model, called "bob.ds3".
Thanks to reddit user(bvanevery) for proposing this feature.
2019-03-01 22:34:46 +09:30
Jeremy Hu cbaccb0116 Add cut face chamfer tool. 2019-02-27 22:29:03 +09:30
Jeremy Hu 86978d0ac3 Add new cut face type: triangle 2019-02-27 08:25:29 +09:30
Jeremy Hu 2b44576f22 Fix cut face base normal. 2019-02-26 22:54:58 +09:30
Jeremy Hu 02bb32391e Add cut face customizing.
This commit introduce a new tool, allow user to customize the face template for automatical extruding.
2019-02-24 23:12:23 +09:30
Jeremy Hu 7491679425 Remove smooth operation from component mesh. 2019-02-23 22:40:11 +09:30
Jeremy Hu 160d2aae5e Show part preview in red color when there is self intersection. 2019-02-23 13:36:24 +09:30
Jeremy Hu b86837b4b0 Add shortcut 'W' for toggling wireframe. 2019-02-23 10:11:56 +09:30
Jeremy Hu d866e0147b Add cut rotation tool
Cut rotation tool allow user to adjust the generated face's rotation.
Convex hull wrapping tool removed in this commit.
2019-02-22 08:18:15 +09:30
Jeremy Hu de133b0838 Hide whole model rotating buttons 2019-02-21 21:54:45 +09:30
Jeremy Hu 4922c669ba Add wireframe toggle back 2019-02-21 21:49:26 +09:30
Jeremy Hu 8053d3c3fb Improve the quality of mesh parts bridging
First, split parts by combine mode, then sub group by color name, those parts which following in the same sub group will be bridged together.
2019-02-21 08:27:15 +09:30
Jeremy Hu 3e1fde4260 Fix build 2019-02-19 20:51:12 +09:30
Jeremy Hu 4bdbdd496a Introduce new mesh generator: nodemesh
Remove meshlite, introduce nodemesh: https://github.com/huxingyi/nodemesh
Now, all the codebase move to C++, no rust language dependency.
2019-02-18 22:27:18 +09:30
Jeremy Hu b65205a48c Add tool button tips especially when failed to generate mesh #20
This commit add tips for buttons, to show what the function of the button.
Also, fixed a issue, there was no useful infos to tell user when the mesh was failed to generate, now user should see a warning icon with tips to show why the preview disappear.

Thanks the following contributors:
@RubenSandwich <https://github.com/RubenSandwich>
boynet <https://dust3d.discourse.group/u/boynet>
fornclake <https://www.reddit.com/user/fornclake>
2019-01-07 22:33:42 +09:30
Jeremy Hu 3f3134cc0e Fix typo 2018-12-29 09:32:53 +09:30
Jeremy Hu ef82f2cc6f Change background opacity of pose editor
When one pose consists of multiple frames, each frame will be hardly see when the opacity is 0.25, this commit change the opacity to 0.5 in pose editor, however, leave it as 0.25 in main modeling interface.
2018-12-16 14:59:22 +09:30
Jeremy Hu ff65a24f32 Fix node scaling with keyboard on add mode
Node scaling only worked with mouse on add mode before, now should be also working with keyboard.
2018-12-15 23:11:02 +09:30
Jeremy Hu 7fe87b2dee Fix double click selection in pose editor
Double click should select connected items only, not select all.
2018-12-11 21:25:55 +09:30
Jeremy Hu f19771fbb1 Fix minimum node radius 2018-12-09 12:20:15 +09:30
Jeremy Hu 251e1f5a6e Fix toolbar icon size #19 2018-12-03 22:56:20 +09:30
Jeremy Hu 08b20e4d5b Fit right sub widget size #19 2018-12-02 23:16:04 +09:30
Jeremy Hu 5704525505 Fit toolbar button size #19 2018-12-02 22:02:34 +09:30
Jeremy Hu ba218b7168 Make the font default size #19 2018-12-02 08:24:04 +09:30
Jeremy Hu ebe97adcde Export metallic, roughness and ambient occlusion map to fbx file 2018-11-28 12:30:03 +09:30
Jeremy Hu 0bee294c7f Put base name into texture image name as prefix 2018-11-28 11:19:22 +09:30
Jeremy Hu b60b9d8691 Embed textures(Color/Normal) to FBX 2018-11-28 00:14:56 +09:30
Jeremy Hu 1866e8fbda Export normal texture and ORM texture to glTF 2018-11-18 08:16:26 +08:00
Jeremy Hu aea7b0cb74 Switch the order of ORM combined texture
Red: Ambient Occlusion
Green: Roughness
Blue: Metallic
2018-11-18 07:30:26 +08:00
Jeremy Hu f6bafdb720 Fix typo 2018-11-18 07:02:12 +08:00
Jeremy Hu 538528d103 Fix normal tangent
Some tangents did not get calculate, this cause some uncolored triangles show in the rendered model, this commit fixed it.
2018-11-17 23:42:46 +08:00
Jeremy Hu 1853e45ea4 Remove model preview from export widget 2018-11-17 17:10:08 +08:00
Jeremy Hu e39acc9f25 Add normal map preview 2018-11-16 13:55:52 +08:00
Jeremy Hu 69d97c7780 Fix build 2018-11-16 07:13:15 +08:00
Jeremy Hu d48bea6248 Merge branch 'master' of https://github.com/huxingyi/dust3d 2018-11-16 07:01:53 +08:00
Jeremy Hu 7f5a47c074 Fix merged texture image
The merged texture image of metalness, roughness and ambient occlusion did not get saved in the document class, this commit fixed it.
2018-11-16 06:56:24 +08:00
huxingyi 9b56ce2dd3 Fix wheel event on windows
The mouse wheel event got triggered on multiple widgets at the same time, this will cause the rendered model been wrongly zoomed while the intention is resizing the nodes.
2018-11-15 22:33:56 +08:00
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
huxingyi 753dfe9d8f Make the inverted component more obvious
Mark inverted components as blue to differentiate with normal components.
2018-11-14 11:11:31 +08:00
Jeremy Hu 1f8f7913a7 Improve mesh generation
Insert intermediate nodes automatically between nodes of long edges to avoid generating tiny area but long edge triangles.
2018-11-12 07:21:34 +08:00
Jeremy Hu 39cfe6537d Speed up document saving
If there are images need to be saved, such as the model turnaround reference sheet and texture images, the document saving may be slow because of image encoding to png, now, all the images are pre encoded when the first load, so the document saving could be speed up by avoid the cost of image encoding.
2018-11-11 21:08:13 +08:00
Jeremy Hu dff8e40ef8 Fix PBR material preview
The metallic and roughness texture not show up before, now should be ok if material is been set properly, however, export not done yet.
2018-11-11 17:13:46 +08:00
Jeremy Hu 4416c05bb5 Export translation to FBX 2018-11-11 11:14:49 +08:00
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 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 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