29 #include "COLLADAFWArrayPrimitiveType.h"
30 #include "COLLADAFWCamera.h"
31 #include "COLLADAFWColorOrTexture.h"
32 #include "COLLADAFWIndexList.h"
33 #include "COLLADAFWLibraryNodes.h"
34 #include "COLLADAFWLight.h"
35 #include "COLLADAFWMeshPrimitiveWithFaceVertexCount.h"
36 #include "COLLADAFWPolygons.h"
37 #include "COLLADAFWRoot.h"
38 #include "COLLADAFWSampler.h"
39 #include "COLLADAFWStableHeaders.h"
40 #include "COLLADAFWTypes.h"
41 #include "COLLADAFWVisualScene.h"
43 #include "COLLADASaxFWLIExtraDataCallbackHandler.h"
44 #include "COLLADASaxFWLLoader.h"
97 : import_settings(import_settings),
98 mImportStage(Fetching_Scene_data),
101 armature_importer(&unit_converter,
115 TagsMap::iterator etit;
116 etit = uid_tags_map.begin();
117 while (etit != uid_tags_map.end()) {
126 COLLADASaxFWL::Loader loader(&errorHandler);
127 COLLADAFW::Root root(&loader,
this);
130 loader.registerExtraDataCallbackHandler(ehandler);
135 std::string mFilename = std::string(this->import_settings->
filepath);
136 const std::string encodedFilename =
bc_url_encode(mFilename);
137 if (!root.loadDocument(encodedFilename)) {
138 fprintf(stderr,
"COLLADAFW::Root::loadDocument() returned false on 1st pass\n");
150 COLLADASaxFWL::Loader loader2;
151 COLLADAFW::Root root2(&loader2,
this);
153 if (!root2.loadDocument(encodedFilename)) {
154 fprintf(stderr,
"COLLADAFW::Root::loadDocument() returned false on 2nd pass\n");
190 std::vector<Object *> *objects_to_scale =
new std::vector<Object *>();
193 std::vector<const COLLADAFW::VisualScene *>::iterator sit;
194 for (sit = vscenes.begin(); sit != vscenes.end(); sit++) {
220 fprintf(stdout,
"Collada: Adjusting Blender units to Importset units: %f.\n", unit_factor);
224 fprintf(stderr,
"+-- Import Scene --------\n");
225 const COLLADAFW::NodePointerArray &roots = (*sit)->getRootNodes();
226 for (
unsigned int i = 0; i < roots.getCount(); i++) {
227 std::vector<Object *> *objects_done =
write_node(roots[i],
nullptr, sce,
nullptr,
false);
228 objects_to_scale->insert(
229 objects_to_scale->end(), objects_done->begin(), objects_done->end());
241 armature_importer.fix_animation();
244 for (
const COLLADAFW::VisualScene *vscene : vscenes) {
245 const COLLADAFW::NodePointerArray &roots = vscene->getRootNodes();
247 for (
unsigned int i = 0; i < roots.getCount(); i++) {
252 if (!libnode_ob.empty()) {
254 fprintf(stderr,
"| Cleanup: free %d library nodes\n", (
int)libnode_ob.size());
256 std::vector<Object *>::iterator it;
257 for (it = libnode_ob.begin(); it != libnode_ob.end(); it++) {
266 delete objects_to_scale;
275 COLLADAFW::Node *par =
nullptr,
287 if (root_map.find(par->getUniqueId()) == root_map.end()) {
288 root_map[
node->getUniqueId()] =
node;
291 root_map[
node->getUniqueId()] = root_map[par->getUniqueId()];
296 COLLADAFW::Transformation::TransformationType
types[] = {
300 COLLADAFW::Transformation::MATRIX,
307 if (
node->getType() == COLLADAFW::Node::JOINT && par ==
nullptr) {
315 node, root_map, object_map, FW_object_map, uid_material_map);
316 COLLADAFW::NodePointerArray &children =
node->getChildNodes();
317 for (i = 0; i < children.getCount(); i++) {
329 const char AUTORING_TOOL[] =
"authoring_tool";
330 const std::string BLENDER(
"Blender ");
331 const COLLADAFW::FileInfo::ValuePairPointerArray &valuePairs = asset->getValuePairArray();
332 for (
size_t i = 0,
count = valuePairs.getCount(); i <
count; i++) {
333 const COLLADAFW::FileInfo::ValuePair *valuePair = valuePairs[i];
336 if (key == AUTORING_TOOL) {
337 if (value.compare(0, BLENDER.length(), BLENDER) == 0) {
339 std::string
v = value.substr(BLENDER.length());
342 return v.substr(0, n);
373 const COLLADAFW::UniqueId &cam_uid = camera->getInstanciatedObjectId();
374 if (uid_camera_map.find(cam_uid) == uid_camera_map.end()) {
381 Camera *cam = uid_camera_map[cam_uid];
390 const COLLADAFW::UniqueId &lamp_uid =
lamp->getInstanciatedObjectId();
391 if (uid_light_map.find(lamp_uid) == uid_light_map.end()) {
392 fprintf(stderr,
"Couldn't find light by UID.\n");
398 Light *la = uid_light_map[lamp_uid];
406 COLLADAFW::Node *source_node,
407 COLLADAFW::Node *instance_node,
409 bool is_library_node)
428 COLLADABU::Math::Matrix4 mat4 = source_node->getTransformationMatrix();
429 COLLADABU::Math::Matrix4 bmat4 =
432 for (
int i = 0; i < 4; i++) {
433 for (
int j = 0; j < 4; j++) {
434 mat[i][j] = bmat4[i][j];
448 COLLADAFW::NodePointerArray &children = source_node->getChildNodes();
449 if (children.getCount()) {
450 for (
unsigned int i = 0; i < children.getCount(); i++) {
451 COLLADAFW::Node *child_node = children[i];
452 const COLLADAFW::UniqueId &child_id = child_node->getUniqueId();
453 if (object_map.find(child_id) == object_map.end()) {
456 COLLADAFW::InstanceNodePointerArray &inodes = child_node->getInstanceNodes();
457 Object *new_child =
nullptr;
458 if (inodes.getCount()) {
459 const COLLADAFW::UniqueId &
id = inodes[0]->getInstanciatedObjectId();
460 fprintf(stderr,
"Doing %d child nodes\n", (
int)node_map.count(
id));
462 object_map.find(
id)->second, node_map[
id], child_node, sce, is_library_node);
466 object_map.find(child_id)->second, child_node,
nullptr, sce, is_library_node);
470 if (is_library_node) {
471 libnode_ob.push_back(new_child);
491 void DocumentImporter::report_unknown_reference(
const COLLADAFW::Node &
node,
492 const std::string object_type)
494 std::string
id =
node.getOriginalId();
495 std::string name =
node.getName();
497 "error: node id=\"%s\", name=\"%s\" refers to an undefined %s.\n",
500 object_type.c_str());
504 COLLADAFW::Node *parent_node,
507 bool is_library_node)
511 bool is_joint =
node->getType() == COLLADAFW::Node::JOINT;
512 bool read_transform =
true;
513 std::string
id =
node->getOriginalId();
514 std::string name =
node->getName();
517 COLLADAFW::NodePointerArray &child_nodes =
node->getChildNodes();
519 std::vector<Object *> *objects_done =
new std::vector<Object *>();
520 std::vector<Object *> *root_objects =
new std::vector<Object *>();
523 stderr,
"| %s id='%s', name='%s'\n", is_joint ?
"JOINT" :
"NODE ",
id.c_str(), name.c_str());
526 if (parent_node ==
nullptr && !is_library_node) {
530 objects_done->push_back(par);
531 root_objects->push_back(par);
532 object_map.insert(std::pair<COLLADAFW::UniqueId, Object *>(
node->getUniqueId(), par));
533 node_map[
node->getUniqueId()] =
node;
535 if (parent_node ==
nullptr || parent_node->getType() != COLLADAFW::Node::JOINT) {
539 if (parent_node ==
nullptr) {
546 COLLADAFW::InstanceGeometryPointerArray &geom =
node->getInstanceGeometries();
547 COLLADAFW::InstanceCameraPointerArray &camera =
node->getInstanceCameras();
548 COLLADAFW::InstanceLightPointerArray &
lamp =
node->getInstanceLights();
549 COLLADAFW::InstanceControllerPointerArray &
controller =
node->getInstanceControllers();
550 COLLADAFW::InstanceNodePointerArray &inst_node =
node->getInstanceNodes();
551 size_t geom_done = 0;
552 size_t camera_done = 0;
553 size_t lamp_done = 0;
554 size_t controller_done = 0;
555 size_t inst_done = 0;
560 while (geom_done < geom.getCount()) {
563 report_unknown_reference(*
node,
"instance_mesh");
566 objects_done->push_back(ob);
567 if (parent_node ==
nullptr) {
568 root_objects->push_back(ob);
573 while (camera_done < camera.getCount()) {
576 report_unknown_reference(*
node,
"instance_camera");
579 objects_done->push_back(ob);
580 if (parent_node ==
nullptr) {
581 root_objects->push_back(ob);
586 while (lamp_done <
lamp.getCount()) {
589 report_unknown_reference(*
node,
"instance_light");
592 objects_done->push_back(ob);
593 if (parent_node ==
nullptr) {
594 root_objects->push_back(ob);
599 while (controller_done <
controller.getCount()) {
600 COLLADAFW::InstanceGeometry *geometry = (COLLADAFW::InstanceGeometry *)
604 report_unknown_reference(*
node,
"instance_controller");
607 objects_done->push_back(ob);
608 if (parent_node ==
nullptr) {
609 root_objects->push_back(ob);
615 while (inst_done < inst_node.getCount()) {
616 const COLLADAFW::UniqueId &node_id = inst_node[inst_done]->getInstanciatedObjectId();
617 if (object_map.find(node_id) == object_map.end()) {
619 "Cannot find object for node referenced by <instance_node name=\"%s\">.\n",
620 inst_node[inst_done]->
getName().c_str());
624 std::pair<std::multimap<COLLADAFW::UniqueId, Object *>::iterator,
625 std::multimap<COLLADAFW::UniqueId, Object *>::iterator>
626 pair_iter = object_map.equal_range(node_id);
627 for (std::multimap<COLLADAFW::UniqueId, Object *>::iterator it2 = pair_iter.first;
628 it2 != pair_iter.second;
631 COLLADAFW::Node *source_node = node_map[node_id];
633 objects_done->push_back(ob);
634 if (parent_node ==
nullptr) {
635 root_objects->push_back(ob);
641 read_transform =
false;
646 if ((geom_done + camera_done + lamp_done + controller_done + inst_done) < 1) {
654 objects_done->push_back(ob);
655 if (parent_node ==
nullptr) {
656 root_objects->push_back(ob);
666 for (
Object *ob : *objects_done) {
667 std::string nodename =
node->getName().empty() ?
node->getOriginalId() :
node->getName();
669 object_map.insert(std::pair<COLLADAFW::UniqueId, Object *>(
node->getUniqueId(), ob));
670 node_map[
node->getUniqueId()] =
node;
672 if (is_library_node) {
673 libnode_ob.push_back(ob);
680 for (
Object *ob : *objects_done) {
681 if (read_transform) {
696 if (objects_done->empty()) {
700 ob = *objects_done->begin();
703 for (
unsigned int i = 0; i < child_nodes.getCount(); i++) {
704 std::vector<Object *> *child_objects;
705 child_objects =
write_node(child_nodes[i],
node, sce, ob, is_library_node);
706 delete child_objects;
736 vscenes.push_back(visualScene);
754 const COLLADAFW::NodePointerArray &nodes = libraryNodes->getNodes();
756 fprintf(stderr,
"+-- Read Library nodes ----------\n");
757 for (
unsigned int i = 0; i < nodes.getCount(); i++) {
758 std::vector<Object *> *child_objects;
759 child_objects =
write_node(nodes[i],
nullptr, sce,
nullptr,
true);
760 delete child_objects;
789 const std::string &str_mat_id = cmat->getName().empty() ? cmat->getOriginalId() :
793 this->uid_effect_map[cmat->getInstantiatedEffect()] = ma;
794 this->uid_material_map[cmat->getUniqueId()] = ma;
806 matNode.
set_ior(ef->getIndexOfRefraction());
807 matNode.
set_alpha(ef->getOpaqueMode(), ef->getTransparent(), ef->getTransparency());
834 const COLLADAFW::UniqueId &uid = effect->getUniqueId();
836 if (uid_effect_map.find(uid) == uid_effect_map.end()) {
837 fprintf(stderr,
"Couldn't find a material by UID.\n");
842 std::map<COLLADAFW::UniqueId, Material *>::iterator iter;
843 for (iter = uid_material_map.begin(); iter != uid_material_map.end(); iter++) {
844 if (iter->second == ma) {
845 this->FW_object_map[iter->first] = effect;
849 COLLADAFW::CommonEffectPointerArray common_efs = effect->getCommonEffects();
850 if (common_efs.getCount() < 1) {
851 fprintf(stderr,
"Couldn't find <profile_COMMON>.\n");
856 COLLADAFW::EffectCommon *ef = common_efs[0];
858 this->FW_object_map[effect->getUniqueId()] = effect;
875 std::string cam_id, cam_name;
878 cam_id = camera->getOriginalId();
879 cam_name = camera->getName();
880 if (cam_name.empty()) {
888 fprintf(stderr,
"Cannot create camera.\n");
897 cam->
clip_start = camera->getNearClippingPlane().getValue();
898 cam->
clip_end = camera->getFarClippingPlane().getValue();
902 case COLLADAFW::Camera::ORTHOGRAPHIC: {
905 case COLLADAFW::Camera::PERSPECTIVE: {
908 case COLLADAFW::Camera::UNDEFINED_CAMERATYPE: {
909 fprintf(stderr,
"Current camera type is not supported.\n");
914 switch (camera->getDescriptionType()) {
915 case COLLADAFW::Camera::ASPECTRATIO_AND_Y: {
918 double ymag = 2 * camera->getYMag().getValue();
919 double aspect = camera->getAspectRatio().getValue();
920 double xmag = aspect * ymag;
925 double yfov = camera->getYFov().getValue();
926 double aspect = camera->getAspectRatio().getValue();
937 case COLLADAFW::Camera::ASPECTRATIO_AND_X:
938 case COLLADAFW::Camera::SINGLE_X:
939 case COLLADAFW::Camera::X_AND_Y: {
946 double x = camera->getXFov().getValue();
952 case COLLADAFW::Camera::SINGLE_Y: {
959 double yfov = camera->getYFov().getValue();
965 case COLLADAFW::Camera::UNDEFINED:
970 this->uid_camera_map[camera->getUniqueId()] = cam;
971 this->FW_object_map[camera->getUniqueId()] = camera;
986 const std::string &imagepath = image->getImageURI().toNativePath();
990 const char *workpath;
993 BLI_join_dirfile(absolute_path,
sizeof(absolute_path), dir, imagepath.c_str());
995 workpath = absolute_path;
1000 fprintf(stderr,
"|! Image not found: %s\n", imagepath.c_str());
1003 workpath = imagepath.c_str();
1008 fprintf(stderr,
"|! Cannot create image: %s\n", workpath);
1011 this->uid_image_map[image->getUniqueId()] = ima;
1012 fprintf(stderr,
"| import Image: %s\n", workpath);
1028 std::string la_id, la_name;
1032 TagsMap::iterator etit;
1034 etit = uid_tags_map.find(light->getUniqueId().toAscii());
1035 if (etit != uid_tags_map.end()) {
1040 la_id = light->getOriginalId();
1041 la_name = light->getName();
1042 if (la_name.empty()) {
1050 fprintf(stderr,
"Cannot create light.\n");
1086 float constatt = light->getConstantAttenuation().getValue();
1087 float linatt = light->getLinearAttenuation().getValue();
1088 float quadatt = light->getQuadraticAttenuation().getValue();
1094 if (light->getColor().isValid()) {
1101 if (
IS_EQ(linatt, 0.0f) && quadatt > 0.0f) {
1103 d =
sqrt(1.0f / quadatt);
1106 else if (
IS_EQ(quadatt, 0.0f) && linatt > 0.0f) {
1108 d = (1.0f / linatt);
1110 else if (
IS_EQ(constatt, 1.0f)) {
1123 switch (light->getLightType()) {
1124 case COLLADAFW::Light::AMBIENT_LIGHT: {
1127 case COLLADAFW::Light::SPOT_LIGHT: {
1131 if (
IS_EQ(att1, 0.0f) && att2 > 0) {
1134 if (
IS_EQ(att2, 0.0f) && att1 > 0) {
1140 case COLLADAFW::Light::DIRECTIONAL_LIGHT: {
1144 case COLLADAFW::Light::POINT_LIGHT: {
1148 if (
IS_EQ(att1, 0.0f) && att2 > 0) {
1151 if (
IS_EQ(att2, 0.0f) && att1 > 0) {
1155 case COLLADAFW::Light::UNDEFINED: {
1156 fprintf(stderr,
"Current light type is not supported.\n");
1162 this->uid_light_map[light->getUniqueId()] =
lamp;
1163 this->FW_object_map[light->getUniqueId()] = light;
1188 #if WITH_OPENCOLLADA_ANIMATION_CLIP
1191 bool DocumentImporter::writeAnimationClip(
const COLLADAFW::AnimationClip *animationClip)
1234 if (uid_tags_map.find(uid.toAscii()) == uid_tags_map.end()) {
1237 return uid_tags_map[uid.toAscii()];
1242 uid_tags_map[uid.toAscii()] = extra_tags;
1248 COLLADAFW::NodePointerArray &child_nodes =
node->getChildNodes();
1249 for (
unsigned int i = 0; i < child_nodes.getCount(); i++) {
1250 if (child_nodes[i]->getType() == COLLADAFW::Node::JOINT) {
typedef float(TangentPoint)[2]
Camera data-block and utility functions.
void * BKE_camera_add(struct Main *bmain, const char *name)
void BKE_collection_object_add_from(struct Main *bmain, struct Scene *scene, struct Object *ob_src, struct Object *ob_dst)
bool BKE_scene_collections_object_remove(struct Main *bmain, struct Scene *scene, struct Object *object, const bool free_us)
struct bConstraint * BKE_constraint_add_for_object(struct Object *ob, const char *name, short type)
struct Scene * CTX_data_scene(const bContext *C)
struct ViewLayer * CTX_data_view_layer(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
struct Image * BKE_image_load_exists(struct Main *bmain, const char *filepath)
void BKE_view_layer_base_deselect_all(struct ViewLayer *view_layer)
struct ID * BKE_id_copy(struct Main *bmain, const struct ID *id)
void BKE_libblock_rename(struct Main *bmain, struct ID *id, const char *name) ATTR_NONNULL()
void id_us_min(struct ID *id)
void BKE_id_free_us(struct Main *bmain, void *idv) ATTR_NONNULL()
General operations, lookup, etc. for blender lights.
struct Light * BKE_light_add(struct Main *bmain, const char *name) ATTR_WARN_UNUSED_RESULT
General operations, lookup, etc. for materials.
struct Material * BKE_material_add(struct Main *bmain, const char *name)
void BKE_object_apply_mat4(struct Object *ob, const float mat[4][4], const bool use_compat, const bool use_parent)
File and directory operations.
int BLI_exists(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
float fov_to_focallength(float fov, float sensor)
void BLI_split_dir_part(const char *string, char *dir, const size_t dirlen)
void BLI_join_dirfile(char *__restrict dst, const size_t maxlen, const char *__restrict dir, const char *__restrict file) ATTR_NONNULL()
void DEG_id_tag_update(struct ID *id, int flag)
void DEG_relations_tag_update(struct Main *bmain)
@ ID_RECALC_COPY_ON_WRITE
#define LA_FALLOFF_INVSQUARE
#define LA_FALLOFF_INVLINEAR
#define USER_UNIT_IMPERIAL
static Controller * controller
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Read Guarded memory(de)allocation.
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Geometry
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Color
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map Separate Set Z Dilate Combine Combine Color Channel Split ID Combine Luminance Directional Alpha Distance Hue Movie Ellipse Bokeh View Corner Anti Mix RGB Hue Separate TEX_NODE_PROC TEX_NODE_PROC TEX_NODE_PROC TEX_NODE_PROC TEX_NODE_PROC Boolean Random String
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map Separate Set Z Dilate Combine Combine Color Channel Split ID Combine Luminance Directional Alpha Distance Hue Movie Ellipse Bokeh View Corner Anti Mix RGB Hue TRANSLATE
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map Separate Set Z Dilate SCALE
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map Separate Set Z Dilate Combine Combine Color Channel Split ID Combine Luminance Directional Alpha Distance Hue Movie Ellipse Bokeh View Corner Anti Mix RGB Hue ROTATE
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
virtual const char * getName() const
void read_node_transform(COLLADAFW::Node *node, Object *ob)
bool write_animation_list(const COLLADAFW::AnimationList *animlist)
void translate_Animations(COLLADAFW::Node *Node, std::map< COLLADAFW::UniqueId, COLLADAFW::Node * > &root_map, std::multimap< COLLADAFW::UniqueId, Object * > &object_map, std::map< COLLADAFW::UniqueId, const COLLADAFW::Object * > FW_object_map, std::map< COLLADAFW::UniqueId, Material * > uid_material_map)
bool write_animation(const COLLADAFW::Animation *anim)
void set_import_from_version(std::string import_from_version)
void make_shape_keys(bContext *C)
void make_armatures(bContext *C, std::vector< Object * > &objects_to_scale)
bool write_skin_controller_data(const COLLADAFW::SkinControllerData *data)
bool write_controller(const COLLADAFW::Controller *controller)
void set_tags_map(TagsMap &tags_map)
void add_root_joint(COLLADAFW::Node *node, Object *parent)
void write_profile_COMMON(COLLADAFW::EffectCommon *, Material *)
std::vector< Object * > * write_node(COLLADAFW::Node *, COLLADAFW::Node *, Scene *, Object *, bool)
std::string get_import_version(const COLLADAFW::FileInfo *asset)
bool addExtraTags(const COLLADAFW::UniqueId &uid, ExtraTags *extra_tags)
@ Fetching_Controller_data
Object * create_light_object(COLLADAFW::InstanceLight *, Scene *)
bool writeGeometry(const COLLADAFW::Geometry *)
bool writeKinematicsScene(const COLLADAFW::KinematicsScene *)
void cancel(const COLLADAFW::String &errorMessage)
bool writeEffect(const COLLADAFW::Effect *)
bool writeLibraryNodes(const COLLADAFW::LibraryNodes *)
bool writeFormulas(const COLLADAFW::Formulas *)
void translate_anim_recursive(COLLADAFW::Node *, COLLADAFW::Node *, Object *)
bool writeVisualScene(const COLLADAFW::VisualScene *)
bool writeScene(const COLLADAFW::Scene *)
Object * create_instance_node(Object *, COLLADAFW::Node *, COLLADAFW::Node *, Scene *, bool)
bool writeAnimationList(const COLLADAFW::AnimationList *)
bool writeAnimation(const COLLADAFW::Animation *)
bool writeController(const COLLADAFW::Controller *)
void create_constraints(ExtraTags *et, Object *ob)
DocumentImporter(bContext *C, const ImportSettings *import_settings)
bool writeImage(const COLLADAFW::Image *)
bool writeSkinControllerData(const COLLADAFW::SkinControllerData *)
bool writeCamera(const COLLADAFW::Camera *)
ExtraTags * getExtraTags(const COLLADAFW::UniqueId &uid)
bool writeLight(const COLLADAFW::Light *)
bool writeMaterial(const COLLADAFW::Material *)
Object * create_camera_object(COLLADAFW::InstanceCamera *, Scene *)
bool writeGlobalAsset(const COLLADAFW::FileInfo *)
bool is_armature(COLLADAFW::Node *node)
Handler class for parser errors.
Handler class for <extra> data, through which different profiles can be handled.
void set_reflectivity(COLLADAFW::FloatOrParam &val)
void set_shininess(COLLADAFW::FloatOrParam &val)
void set_specular(COLLADAFW::ColorOrTexture &cot)
void update_material_nodetree()
void set_ior(COLLADAFW::FloatOrParam &val)
void set_reflective(COLLADAFW::ColorOrTexture &cot)
void set_emission(COLLADAFW::ColorOrTexture &cot)
void set_alpha(COLLADAFW::EffectCommon::OpaqueMode mode, COLLADAFW::ColorOrTexture &cot, COLLADAFW::FloatOrParam &val)
void set_diffuse(COLLADAFW::ColorOrTexture &cot)
void set_ambient(COLLADAFW::ColorOrTexture &cot)
void optimize_material_assignements()
bool write_geometry(const COLLADAFW::Geometry *geom)
Object * create_mesh_object(COLLADAFW::Node *node, COLLADAFW::InstanceGeometry *geom, bool isController, std::map< COLLADAFW::UniqueId, Material * > &uid_material_map)
void read_asset(const COLLADAFW::FileInfo *asset)
void calculate_scale(Scene &sce)
UnitConverter::UnitSystem isMetricSystem(void)
float getLinearMeter(void)
bool bc_set_parent(Object *ob, Object *par, bContext *C, bool is_parent_space)
void bc_match_scale(Object *ob, UnitConverter &bc_unit, bool scale_to_scene)
std::string bc_url_encode(std::string data)
Object * bc_add_object(Main *bmain, Scene *scene, ViewLayer *view_layer, int type, const char *name)
PointerRNA RNA_pointer_get(PointerRNA *ptr, const char *name)
void RNA_id_pointer_create(ID *id, PointerRNA *r_ptr)
void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
void RNA_property_float_set(PointerRNA *ptr, PropertyRNA *prop, float value)
struct CameraDOFSettings dof
void WM_event_add_notifier(const bContext *C, uint type, void *reference)