February 24, 2017, 15:40 (GMT) |
Innitial commit: Snap system - Adds Clip Plan support and simulates occlusion The main alterations here were made in the transform_snap_object.c file. The main change add the "clip plans" of the `rv3d->clip` to bypass the snap to unseen elements. This solution continues to take advantage of the BVH. Since we can use clip planes, we can now simulate occlusion (ie ignore what is behind a face), first a raycast is made to get the normal and coordinates of the polygon of the hit. Then a plane is created just behind the polygon, thus ignoring everything that is behind it when a snap is made for vertex or edge. This is not the ideal occlusion solution, but it is already a good step to get the perfect occlusion test. In addition to this change other changes were made: Now snap_to is a flag that can indicate whether the snap is made for one, two or all elements at the same time (this will not change much for the user, the only operator using mixed snap is the ruler) ; if the object is in wireframe mode or Bounding Box, they are ignored in snap to face (good idea?); use the BVHTree of looptris to snap vertices and edges (saves memory); |
Revision bc0208f by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic: simplified conditional statements |
Revision fe9c8be by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic import: nicer progress updates |
Revision df4feb3 by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic import: fixed bug where local matrix from Alembic was used as object matrix Also renamed AbcObjectReader::readObjectMatrix to setupObjectTransform, as it does more than just reading the object matrix; it also sets up an object constraint if the Alembic Xform is animated. |
Revision 75597c0 by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic import: separated reading matrix and getting the appropriate Xform object Also added a bit better error reporting, instead of silently ignoring invalid Alembic data. |
Revision 9bf69ab by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic import: don't crash on instances Importing instances (i.e. Alembic objects that reference instance sources rather than contain data for themselves) isn't supported yet, but with this change at least it doesn't crash Blender. |
Revision 74e42c9 by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic import: be more lenient towards unknown object types. Alembic is an interchange and caching format, that can contain custom object schemas. Blender shouldn't crash (because of failing asserts) just because it doesn't know such an object type. |
Revision 2074d26 by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic: don't call object.getFullName() multiple times. |
Revision 87dcbfd by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic: Renamed parent_map to reader_map It's a mapping from full path of an Alembic object to an AbcObjectReader*. The fact that at some point it is used to construct parent-child relations doesn't matter. |
Revision 1e06828 by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic: use typedefs to make it easier to handle maps/vectors |
Revision 062d322 by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic: more const-ness |
Revision 70852c8 by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic: fixed importer The importer was guessing whether an Alembic IXform object was part of a child object, or should be represented as an Empty in Blender. By reversing the order in which objects are visited, the children can now claim their parent as part of the same object (so IPolyMesh claims its parent IXform as part of the same Blender object). This results in much less guesswork. I've also removed similar guesswork from the code that sets parent pointers, by simply searching for the parent in a hierarchical way, instead of trying to predict (again) which IXforms were turned into empties. Also, visit_object() now actually visits the object -- previously it only visited its children, and assumed the object it was called on was already handled by a previous call. |
Revision e3bf024 by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic: prevent a couple of unnecessary multiplications |
Revision 0fe32b0 by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic: be more explicit in y-up versus z-up variables. |
Revision 7017a5f by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic: removed a lot of unnecessary & duplicate code from abc_util.cc create_transform_matrix(float[4][4]) did mostly the same as create_transform_matrix(Object *, float[4][4]), but more elegant. However, the former has some inconsistencies with the latter (which are now merged and made explicit, turned out one was for z-up?y-up while the other was for y-up?z-up), and was renamed to copy_m44_axis_swap(...) to convey its purpose more clearly. Furthermore, "loc" has been renamed to "trans", as matrices don't store locations but translations; and more variables now have a src_ or dst_ prefix to denote whether they contain a matrix/vector in the source or destination axis orientation. |
Revision 947faf3 by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic: added note |
Revision af11e2f by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic: allow copy_{z,y}up_from_{y,z}up() to be called with yup=zup This allows in-place conversion between z-up and y-up, by passing the same variable to both arguments. |
Revision 3d3b466 by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic: import empties under their own name in Alembic, not their parent's Before this commit something strange happened, as the m_data_name of an inherit data-less object was used. |
Revision 60a2d99 by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic: Don't compute world matrix when it's not necessary. |
Revision 3f4f0a1 by Sybren A. Stüvel February 24, 2017, 15:35 (GMT) |
Alembic: cleaned up hack in AbcObjectReader::read_matrix() |
|
|
|


Master Commits
MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021