Blender V4.5
collada.cpp
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2009-2022 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#include "collada.h"
10#include "DocumentExporter.h"
11#include "DocumentImporter.h"
12#include "ExportSettings.h"
13#include "ImportSettings.h"
14
15#include "BKE_context.hh"
16
17#include "BLI_linklist.h"
18
19static void print_import_header(ImportSettings &import_settings)
20{
21 fprintf(stderr, "+-- Collada Import parameters------\n");
22 fprintf(stderr, "| input file : %s\n", import_settings.filepath);
23 fprintf(stderr, "| use units : %s\n", (import_settings.import_units) ? "yes" : "no");
24 fprintf(stderr, "| custom normals : %s\n", (import_settings.custom_normals) ? "yes" : "no");
25 fprintf(stderr, "| autoconnect : %s\n", (import_settings.auto_connect) ? "yes" : "no");
26 fprintf(stderr, "+-- Armature Import parameters ----\n");
27 fprintf(stderr, "| find bone chains: %s\n", (import_settings.find_chains) ? "yes" : "no");
28 fprintf(stderr, "| min chain len : %d\n", import_settings.min_chain_length);
29 fprintf(stderr, "| fix orientation : %s\n", (import_settings.fix_orientation) ? "yes" : "no");
30 fprintf(stderr, "| keep bind info : %s\n", (import_settings.keep_bind_info) ? "yes" : "no");
31}
32
33static void print_import_footer(int status)
34{
35 fprintf(stderr, "+----------------------------------\n");
36 fprintf(stderr, "| Collada Import : %s\n", (status) ? "OK" : "FAIL");
37 fprintf(stderr, "+----------------------------------\n");
38}
39
40int collada_import(bContext *C, ImportSettings *import_settings)
41{
42 print_import_header(*import_settings);
43 DocumentImporter imp(C, import_settings);
44 int status = imp.import() ? 1 : 0;
45 print_import_footer(status);
46
47 return status;
48}
49
50int collada_export(bContext *C, ExportSettings *export_settings)
51{
52 BlenderContext blender_context(C);
53 const Scene *scene = blender_context.get_scene();
54 ViewLayer *view_layer = blender_context.get_view_layer();
55
56 int includeFilter = OB_REL_NONE;
57 if (export_settings->include_armatures) {
58 includeFilter |= OB_REL_MOD_ARMATURE;
59 }
60 if (export_settings->include_children) {
61 includeFilter |= OB_REL_CHILDREN_RECURSIVE;
62 }
63
64 /* Fetch the complete set of exported objects
65 * ATTENTION: Invisible objects will not be exported
66 */
67 eObjectSet objectSet = (export_settings->selected) ? OB_SET_SELECTED : OB_SET_ALL;
69 scene, view_layer, objectSet, (eObRelationTypes)includeFilter);
70
71 int export_count = BLI_linklist_count(export_settings->export_set);
72
73 if (export_count == 0) {
74 if (export_settings->selected) {
75 fprintf(stderr,
76 "Collada: Found no objects to export.\nPlease ensure that all objects which shall "
77 "be exported are also visible in the 3D Viewport.\n");
78 }
79 else {
80 fprintf(stderr, "Collada: Your scene seems to be empty. No Objects will be exported.\n");
81 }
82 }
83 else {
84 if (export_settings->sort_by_name) {
86 }
87 }
88
89 DocumentExporter exporter(blender_context, export_settings);
90 int status = exporter.exportCurrentScene();
91
92 BLI_linklist_free(export_settings->export_set, nullptr);
93
94 return (status) ? -1 : export_count;
95}
eObRelationTypes
@ OB_REL_MOD_ARMATURE
@ OB_REL_CHILDREN_RECURSIVE
@ OB_REL_NONE
LinkNode * BKE_object_relational_superset(const Scene *scene, ViewLayer *view_layer, eObjectSet objectSet, eObRelationTypes includeFilter)
eObjectSet
@ OB_SET_SELECTED
@ OB_SET_ALL
#define C
Definition RandGen.cpp:29
ViewLayer * get_view_layer()
int collada_import(bContext *C, ImportSettings *import_settings)
Definition collada.cpp:40
static void print_import_footer(int status)
Definition collada.cpp:33
static void print_import_header(ImportSettings &import_settings)
Definition collada.cpp:19
int collada_export(bContext *C, ExportSettings *export_settings)
Definition collada.cpp:50
void bc_bubble_sort_by_Object_name(LinkNode *export_set)
LinkNode * export_set