Blender
V4.5
source
blender
io
collada
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
19
static
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
33
static
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
40
int
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
50
int
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
;
68
export_settings->
export_set
=
BKE_object_relational_superset
(
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
) {
85
bc_bubble_sort_by_Object_name
(export_settings->
export_set
);
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
}
BKE_context.hh
eObRelationTypes
eObRelationTypes
Definition
BKE_object.hh:618
OB_REL_MOD_ARMATURE
@ OB_REL_MOD_ARMATURE
Definition
BKE_object.hh:624
OB_REL_CHILDREN_RECURSIVE
@ OB_REL_CHILDREN_RECURSIVE
Definition
BKE_object.hh:623
OB_REL_NONE
@ OB_REL_NONE
Definition
BKE_object.hh:619
BKE_object_relational_superset
LinkNode * BKE_object_relational_superset(const Scene *scene, ViewLayer *view_layer, eObjectSet objectSet, eObRelationTypes includeFilter)
Definition
blenkernel/intern/object.cc:4979
eObjectSet
eObjectSet
Definition
BKE_object.hh:628
OB_SET_SELECTED
@ OB_SET_SELECTED
Definition
BKE_object.hh:629
OB_SET_ALL
@ OB_SET_ALL
Definition
BKE_object.hh:631
BLI_linklist.h
BLI_linklist_count
int BLI_linklist_count(const LinkNode *list) ATTR_WARN_UNUSED_RESULT
Definition
BLI_linklist.cc:24
BLI_linklist_free
void BLI_linklist_free(LinkNode *list, LinkNodeFreeFP freefunc)
Definition
BLI_linklist.cc:255
DocumentExporter.h
DocumentImporter.h
ExportSettings.h
ImportSettings.h
C
#define C
Definition
RandGen.cpp:29
BlenderContext
Definition
BlenderContext.h:42
BlenderContext::get_view_layer
ViewLayer * get_view_layer()
Definition
BlenderContext.cpp:140
BlenderContext::get_scene
Scene * get_scene()
Definition
BlenderContext.cpp:123
DocumentExporter
Definition
DocumentExporter.h:14
DocumentExporter::exportCurrentScene
int exportCurrentScene()
Definition
DocumentExporter.cpp:109
DocumentImporter
Definition
DocumentImporter.h:26
DocumentImporter::import
bool import()
Definition
DocumentImporter.cpp:97
collada_import
int collada_import(bContext *C, ImportSettings *import_settings)
Definition
collada.cpp:40
print_import_footer
static void print_import_footer(int status)
Definition
collada.cpp:33
print_import_header
static void print_import_header(ImportSettings &import_settings)
Definition
collada.cpp:19
collada_export
int collada_export(bContext *C, ExportSettings *export_settings)
Definition
collada.cpp:50
collada.h
bc_bubble_sort_by_Object_name
void bc_bubble_sort_by_Object_name(LinkNode *export_set)
Definition
collada_utils.cpp:327
ExportSettings
Definition
ExportSettings.h:44
ExportSettings::selected
bool selected
Definition
ExportSettings.h:52
ExportSettings::export_set
LinkNode * export_set
Definition
ExportSettings.h:80
ExportSettings::sort_by_name
bool sort_by_name
Definition
ExportSettings.h:71
ExportSettings::include_armatures
bool include_armatures
Definition
ExportSettings.h:54
ExportSettings::include_children
bool include_children
Definition
ExportSettings.h:53
ImportSettings
Definition
ImportSettings.h:11
ImportSettings::import_units
bool import_units
Definition
ImportSettings.h:12
ImportSettings::auto_connect
bool auto_connect
Definition
ImportSettings.h:15
ImportSettings::custom_normals
bool custom_normals
Definition
ImportSettings.h:13
ImportSettings::min_chain_length
int min_chain_length
Definition
ImportSettings.h:17
ImportSettings::fix_orientation
bool fix_orientation
Definition
ImportSettings.h:16
ImportSettings::find_chains
bool find_chains
Definition
ImportSettings.h:14
ImportSettings::keep_bind_info
bool keep_bind_info
Definition
ImportSettings.h:19
ImportSettings::filepath
char * filepath
Definition
ImportSettings.h:18
Scene
Definition
DNA_scene_types.h:2106
ViewLayer
Definition
DNA_layer_types.h:149
bContext
Definition
blenkernel/intern/context.cc:58
Generated on
for Blender by
doxygen
1.15.0