9#include "COLLADASWInstanceCamera.h"
10#include "COLLADASWInstanceGeometry.h"
11#include "COLLADASWInstanceLight.h"
23 Scene *scene = blender_context.get_scene();
26 std::string name =
id_name(scene);
33void SceneExporter::exportHierarchy()
39 for (node = this->export_settings.get_export_set(); node; node = node->
next) {
45 for (node = this->export_settings.get_export_set(); node; node = node->
next) {
47 if (this->export_settings.is_export_root(ob)) {
61 for (
int index = 0; index < base_objects.
size(); index++) {
70void SceneExporter::writeNodeList(std::vector<Object *> &child_objects,
Object *parent)
78 for (
auto *child : child_objects) {
86void SceneExporter::writeNode(
Object *ob)
88 const Scene *scene = blender_context.get_scene();
89 ViewLayer *view_layer = blender_context.get_view_layer();
91 std::vector<Object *> child_objects;
94 this->export_settings.get_export_set(), ob, scene, view_layer);
97 bool armature_exported =
false;
100 if (ob_arm !=
nullptr) {
102 this->export_settings.get_export_set(), ob_arm, scene, view_layer);
106 armature_exported =
true;
111 COLLADASW::Node colladaNode(mSW);
114 colladaNode.setType(COLLADASW::Node::NODE);
127 bool instance_controller_created =
false;
128 if (armature_exported) {
129 instance_controller_created = arm_exporter->add_instance_controller(ob);
131 if (!instance_controller_created) {
132 COLLADASW::InstanceGeometry instGeom(mSW);
133 instGeom.setUrl(COLLADASW::URI(
134 COLLADABU::Utils::EMPTY_STRING,
135 get_geometry_id(ob, this->export_settings.get_use_object_instantiation())));
138 instGeom.getBindMaterial(), ob,
this->export_settings.get_active_uv_only());
145 arm_exporter->add_bone_collections(ob, colladaNode);
146 arm_exporter->add_armature_bones(ob, view_layer,
this, child_objects);
151 COLLADASW::InstanceCamera instCam(
152 mSW, COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING,
get_camera_id(ob)));
158 COLLADASW::InstanceLight instLa(
159 mSW, COLLADASW::URI(COLLADABU::Utils::EMPTY_STRING,
get_light_id(ob)));
169 printf(
"\t%s\n", object->id.name);
178 std::string con_tag = con_name +
"_constraint";
179 printf(
"%s\n", con_name.c_str());
180 printf(
"%s\n\n", con_tag.c_str());
181 colladaNode.addExtraTechniqueChildParameter(
"blender", con_tag,
"type", con->type);
182 colladaNode.addExtraTechniqueChildParameter(
"blender", con_tag,
"enforce", con->enforce);
183 colladaNode.addExtraTechniqueChildParameter(
"blender", con_tag,
"flag", con->flag);
184 colladaNode.addExtraTechniqueChildParameter(
185 "blender", con_tag,
"headtail", con->headtail);
186 colladaNode.addExtraTechniqueChildParameter(
187 "blender", con_tag,
"lin_error", con->lin_error);
188 colladaNode.addExtraTechniqueChildParameter(
189 "blender", con_tag,
"own_space", con->ownspace);
190 colladaNode.addExtraTechniqueChildParameter(
191 "blender", con_tag,
"rot_error", con->rot_error);
192 colladaNode.addExtraTechniqueChildParameter(
193 "blender", con_tag,
"tar_space", con->tarspace);
194 colladaNode.addExtraTechniqueChildParameter(
195 "blender", con_tag,
"lin_error", con->lin_error);
201 ListBase targets = {
nullptr,
nullptr};
207 std::string tar_id((obtar) ?
id_name(obtar) :
"");
208 colladaNode.addExtraTechniqueChildParameter(
"blender", con_tag,
"target_id", tar_id);
219 writeNodeList(child_objects, ob);
223 writeNodeList(child_objects, ob);
#define FOREACH_COLLECTION_OBJECT_RECURSIVE_END
#define FOREACH_COLLECTION_OBJECT_RECURSIVE_BEGIN(_collection, _object)
void BKE_constraint_targets_flush(struct bConstraint *con, struct ListBase *targets, bool no_copy)
int BKE_constraint_targets_get(struct bConstraint *con, struct ListBase *r_targets)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
void bc_remove_mark(Object *ob)
bool bc_is_in_Export_set(LinkNode *export_set, Object *ob, const Scene *scene, ViewLayer *view_layer)
void bc_get_children(std::vector< Object * > &child_set, Object *ob, const Scene *scene, ViewLayer *view_layer)
int bc_is_marked(Object *ob)
struct Collection Collection
struct bConstraintTarget bConstraintTarget
struct bConstraint bConstraint
struct ViewLayer ViewLayer
void add_material_bindings(COLLADASW::BindMaterial &bind_material, Object *ob, bool active_uv_only)
std::string get_camera_id(Object *ob)
std::string encode_xml(const std::string &xml)
std::string translate_id(const char *idString)
std::string get_geometry_id(Object *ob)
std::string get_light_id(Object *ob)
std::string id_name(void *id)
Object * bc_get_assigned_armature(Object *ob)
struct Collection * instance_collection