Commit Graph

948 Commits

Author SHA1 Message Date
Campbell Barton
c0f88ed8a8 Cleanup: sort forward declarations of enum & struct
Done using:
  source/tools/utils_maintenance/c_sort_blocks.py
2019-01-28 21:17:58 +11:00
Campbell Barton
1e4aab36c2 Cleanup: remove redundant BKE/BLI/BIF headers 2019-01-26 21:20:25 +11:00
Campbell Barton
2218bf02dd Cleanup: sort cmake file lists 2019-01-25 08:30:33 +11:00
Campbell Barton
88a80fcec8 Cleanup: commas at the end of enums
Without this clang-format may wrap them onto a single line.
2019-01-16 00:03:03 +11:00
Bastien Montagne
01029c68d2 Cleanup: rename BKE_libblock_delete to BKE_id_delete. 2019-01-15 11:09:16 +01:00
Bastien Montagne
f55a178db0 Cleanup: rename BKE_libblock_free_us to BKE_id_free_us. 2019-01-15 11:09:16 +01:00
Campbell Barton
f98e4cbedb Preferences: remove author field
This was only used by collada export metadata.

If metadata like this is needed, we can use per-filetype preferences,
to make it clear when user identifiable information is being used.
2019-01-11 11:00:33 +11:00
Trevor Glauz
8b192e1a6a fix D4187: Collada Importer: Material assignment broken after importing Mesh with multiple materials 2019-01-10 20:24:56 +01:00
Gaia Clary
80281e34fd fix T60049: Collada Exporter: When exporting multiple UVs, the set index must start with 0 2019-01-10 13:15:20 +01:00
Gaia Clary
4b7596ec91 fix T59743: Collada exporter: Add option for exporting flat curves
The Collada exporter suppresses the export of flat animation curves
to optimize the animation (in fact to make the exported file smaller).

But sometimes it is important to also have the flat curves exported
because they may be needed to define an initial transformation to
a fixed location - like translating the weapon from the ground floor
to the back of the model in the report.

I added a new option "all keyed curves" which is disabled by default
but when enabled it also exports flat curves.

feedback is very welcome
2019-01-05 21:52:41 +01:00
Gaia Clary
674d364af0 fix T60092 collada exporter: exporting a rig with one single bone fails
The problem was that removing entries from a vetor while iterating
the vector was implemented badly. This caused the failure when only
one element was in vector.
2019-01-05 18:08:10 +01:00
Campbell Barton
bcf0c71433 Cleanup: remove non-existing function declarations 2018-12-31 00:58:54 +11:00
Campbell Barton
65bc931306 Cleanup: argument wrapping indentation 2018-12-20 08:03:48 +11:00
Campbell Barton
49490e5cfb Merge branch 'master' into blender2.8 2018-12-12 13:02:09 +11:00
Campbell Barton
e757c4a3be Cleanup: use colon separator after parameter
Helps separate variable names from descriptive text.
Was already used in some parts of the code,
double space and dashes were used elsewhere.
2018-12-12 12:50:58 +11:00
Sergey Sharybin
79312c1912 Depsgraph: Remove duplicated sets of recalc/update flags
There were at least three copies of those:

- OB_RECALC* family of flags, which are rudiment of an old
  dependency graph system.
- PSYS_RECALC* which were used by old dependency graph system
  as a separate set since the graph itself did not handle
  particle systems.
- DEG_TAG_* which was used to tag IDs.

Now there is a single set, which defines what can be tagged
and queried for an update. It also has some aggregate flags
to make queries simpler.

Lets once and for all solve the madness of those flags, stick
to a single set, which will not overlap with anything or require
any extra conversion.

Technically, shouldn't be measurable user difference, but some
of the agregate flags for few dependency graph components did
change.

Fixes T58632: Particle don't update rotation settings
2018-12-07 11:37:38 +01:00
Campbell Barton
b48156d012 Cleanup: style 2018-12-07 20:48:56 +11:00
Gaia Clary
d6454a15f7 Merge remote-tracking branch 'origin/master' into blender2.8 2018-12-05 22:05:19 +01:00
Gaia Clary
3552731551 Fix (devtalk 4053): Collada build with older cmake versions broken 2018-12-05 22:04:10 +01:00
Gaia Clary
f692886164 Merge remote-tracking branch 'origin/master' into blender2.8 2018-12-05 20:30:46 +01:00
Gaia Clary
da4991fcae fix: Collada: remove Class from method definition in header file 2018-12-05 20:28:23 +01:00
Gaia Clary
baf89af0f5 Merge remote-tracking branch 'origin/master' into blender2.8 2018-12-04 20:31:30 +01:00
Gaia Clary
22bba02bc8 fix T58568: used wrong case in variable name 2018-12-04 20:28:20 +01:00
Gaia Clary
5c3955452b Merge branch 'master' into blender2.8 2018-12-04 19:48:21 +01:00
Gaia Clary
10c50d7dbf fix T58568 build errors when using collada 1.6.68 or newer 2018-12-04 19:11:57 +01:00
Gaia Clary
dbb479b998 fix: Collada exporter has similar issue as reproted in T58150 2018-12-01 15:38:18 +01:00
Gaia Clary
0606829850 fix T58293 Collada: Does not export Texture coordinates when option 'only selected UV Map' is enabled 2018-12-01 14:18:35 +01:00
Campbell Barton
f1edccdbe1 Cleanup: remove unused files 2018-11-29 09:05:49 +11:00
Gaia Clary
6d2da3950e cleanup: Collada replaced outdated usage of CD_MTFACE Layers by CD_MLOOPUV 2018-11-28 18:14:12 +01:00
Gaia Clary
dd102a4757 fix:T58093 Collada Exporter does not create bind_vertex_input and texcoord attribute
The Collada exporter used MTFACE layers (deprecated) instead of
CD_MLOOPUV layers. In 2.8 the exporter could no longer find the UVMaps
reliably.
2018-11-28 15:36:09 +01:00
Sergey Sharybin
cb9c4b4552 Fix defined but unused static variable warning 2018-11-28 14:13:42 +01:00
Campbell Barton
36da85ebeb Cleanup: style 2018-11-28 11:24:45 +11:00
Gaia Clary
4c1a01d1a0 fix: Collada Exporter: improve usage of viewlayer and depsgraph
* The exporter now gets the view layer from the context
  instead of the depsgraph.
* The depsgrap is now fetched only on demand since the graph
  is not always needed for exporting (currently only for armature exports).
2018-11-27 12:22:30 +01:00
Gaia Clary
3c76751a68 fix: Collada exporter: take care of parent inverse for exports of Armatures with child objects 2018-11-26 23:14:46 +01:00
Gaia Clary
c99f18a787 Fix: Collada Importer: Keep bindinfo option is not properly handled
Actually the option was not at all used and the importer always created the bindinfo custom properties.
2018-11-26 23:14:46 +01:00
Gaia Clary
65874d3f33 fix: Collada: The limit precision option does nothing 2018-11-26 23:14:45 +01:00
Campbell Barton
059c119719 Merge branch 'master' into blender2.8 2018-11-25 08:01:53 +11:00
Gaia Clary
0c8b0771f2 refactor: Collada reorganize class constructors
- Class constructors without body (only attribute initialisations)
  can safely be kept in the class header files

- Constructor variables should be initialized in the order of their
  definition in the header files

This change is also aimed to remove a couple of
build warnings from the linux builds.
2018-11-24 14:30:19 +01:00
Gaia Clary
e49c66efae fix: Collada: used wrong Enumeration type for comparison 2018-11-23 19:23:55 +01:00
Gaia Clary
bd25523aff fix: collada: must use case sensitive filename in include 2018-11-23 19:23:16 +01:00
Gaia Clary
397272e561 fix: Collada: use reference to BezTriple instead of copy 2018-11-23 19:21:29 +01:00
Gaia Clary
7eb9091e96 fix: compiler errors on mac_x86_64_10_9 2018-11-23 18:38:19 +01:00
Gaia Clary
b9b50c0e39 cleanup: Collada: remove unused variables 2018-11-23 18:38:19 +01:00
Gaia Clary
322cf89a14 Partial rewrite of the Collada Module for Blender 2.8
Most important changes are in the Animation exporter and Animation Importer.
There is still some cleaning up to be done. But the Exporter/Importer basically
work within Blender 2.8

Some details:

User Interface:
The interface has been reorganized to look more like the FBX interface.

New options in user interface:

* keep_keyframes:
  When sampling the distance between 2 keyframes is defined by
  the sampling rate. Furthermore the keyframes defined in the
  FCurves are not exported. However when this option is enabled
  then also the defined keyframes will be added to the exported fcurves

* keep_smooth_curves:
  When sampling we do not use FCurves. So we also have no Curve handles
  for smooth exporting. However when this option is enabled, Blender
  does its best to recreate the handles for export. This is a very
  experimental feature and it is know to break when:

  - the exported animated objects have parent inverse matrices
    different from the unit matrix
  - The exported objects have negative scaling

  There may be many other situations when this feature breaks.
  This needs to be further tested. It may be removed later or replaced
  by something less wonky.

BlenderContext:
is a new class that contains the bridge to Blender. It contains
pointers to the current export/import context plus derived values
of Depsgraph, Scene, Main

Reporting:
I reorganized the output on the Blender Console to become more
informative and more readable

Preservation of Item names:
name attributes are now encoded with XML entities. This makes
sure that i can export/import names exactly defined in the tool.
This affects material names, bone names and object names.

Hierarchy export:
* Object and Bone Hierarchies are now exported correctly
  by taking the Blender parent/child hierarchy into account
* Export also not selected intermediate objects

  Problem:
  When we export an Object Hierarchy, then we must export
  all elements of the hierarchy to maintain the transforms. This
  is especially important when exporting animated objects, because the
  animation curves are exported as relative curves based on the
  parent-child hierarchy. If an intermediate animated object is missing
  then the exported animation breaks.

  Solution:
  If the "Selected" Optioon is enabled, then take care
  to also export all objects which are not selected and hidden,
  but which are parents of selected objects.

Node Based Material Importer (wip):
Added basic support for Materials with diffuse color and
diffuse textures. More properties (opacity, emission) need
changes in the used shader.
Note: Materials are all constructed by using the principled BSDF shader.

Animation Exporter:
* Massive optimization of the Animation Bake tool (Animation Sampler).
  Instead of sampling each fcurve separately, i now sample all
  exported fcurves simultaneously. So i avoid many (many!)
  scene updates during animation export.
* Add support for Continuous Acceleration (Fcurve handles)
  This allows us to create smoother FCurves during importing Collada
  Animation curves. Possibly this should become an option ionstead of
  a fixed import feature.
* Add support for sampling curves (to bake animations)
* The animation sampler now can be used for any animation curve.
  Before the sampler only looked at curves which are supported by
  Standard Collada 1.4. However the Collada exporter currently
  ignores all animation curves which are not covered by the 1.4.1
  Collada Standards. There is still some room for improvements
  here (work in progres)

  Known issues:

    * Some exports do currently not work reliably, among those
      are the camera animations, material animations and light animations
      those animations will be added back next (work in progres)

    * Exporting animation curves with keyframes (and tangents)
      sometimes results in odd curves (when parent inverse matrix is involved)
      This needs to be checked in more depth (probably it can not be solved).

    * Export of "all animations in scene" is disabled because the
      Collada Importer can not handle this reliably at the
      moment (work in progres).

* Support for Animation Clip export
  Added one extra level to the exported animations
  such that now all scene animations are enclosed:

  <Animation name="id_name(ob)_Action">
    <Animation>...</Animation>
    ...
  </Animation>

Animation Importer:
* Import of animations for objects with multiple materials
  When importing multiple materials for one object,
  the imported material animation curves have all been
  assigned to the first material in the object.

Error handling (wip):
The Importer was a bit confused as it sometimes ignored fatal
parsing errors and continued to import. I did my best to
unconfuse it, but i believe that this needs to be tested more.

Refactoring:

update : move generation of effect id names into own function
update : adjust importer/exporter for no longer supported HEMI lights
cleanup: Removed no lopnger existing attribute from the exporter presets
cleanup: Removed not needed Context attribute from DocumentExporter
fix    : Avoid duplicate deletion of temporary items
cleanup: fixed indentation and white space issues
update : Make BCAnimation class more self contained
cleanup: Renamed classes, updated comments for better reading
cleanup: Moved static class functions to collada_utils
cleanup: Moved typedefs to more intuitive locations
cleanup: indentation and class method declarations
cleanup: Removed no longer needed methods
update : Moved Classes into separate files
cleanup: Added comments
cleanup: take care of name conventions
...    : many more small changes, not helpful to list them all
2018-11-23 17:08:14 +01:00
Clément Foucault
c3d03b4434 Lamps: Remove HEMI light type
This type is not supported by either Eevee or Cycles. If other types of
lamps are needed by external engines, we should support adding custom types.
2018-11-14 11:50:37 +01:00
Campbell Barton
55e719ec35 Merge branch 'master' into blender2.8 2018-11-14 17:21:34 +11:00
Campbell Barton
d7f55c4ff5 Cleanup: comment block tabs 2018-11-14 17:10:56 +11:00
Campbell Barton
c121bc6219 Cleanup: use explicit 'select_and_set_active' API name
Selection should be separated from active state and handled by higher
level code (operators/editors) instead of happening automatically.
2018-11-08 08:31:11 +11:00
Bastien Montagne
64ec05b64d Cleanup: remove some useless BKE_library and BKE_main includes.
Makes it simpler to make some changes...

Also fix order of some includes (use alphabetical please).
2018-11-07 20:58:54 +01:00
Bastien Montagne
4b2110fc86 Cleanup: Remove 'BKE_library.h' include from 'BKE_main.h'
That kind of implicit includes should really only be done when totally,
absolutely necessary, and ideally only with rather simple 'second-level'
headers.

Otherwise not being explicit with includes always end up biting in
unexpected ways...
2018-11-07 20:58:53 +01:00