2011-01-28 12:56:30 +00:00
/*
2010-06-03 17:41:33 +00:00
* * * * * * BEGIN GPL LICENSE BLOCK * * * * *
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version 2
* of the License , or ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software Foundation ,
* Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 , USA .
*
* Contributor ( s ) : Chingiz Dyussenov , Arystanbek Dyussenov , Nathan Letwory .
*
* * * * * * END GPL LICENSE BLOCK * * * * *
*/
2011-02-27 20:30:35 +00:00
/** \file blender/collada/DocumentImporter.cpp
* \ ingroup collada
*/
2009-11-29 14:38:50 +00:00
// TODO:
// * name imported objects
// * import object rotation as euler
2010-10-05 00:05:14 +00:00
# include <string>
# include <map>
# include <algorithm> // sort()
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
# include "COLLADAFWRoot.h"
# include "COLLADAFWStableHeaders.h"
# include "COLLADAFWColorOrTexture.h"
# include "COLLADAFWIndexList.h"
# include "COLLADAFWMeshPrimitiveWithFaceVertexCount.h"
# include "COLLADAFWPolygons.h"
# include "COLLADAFWSampler.h"
# include "COLLADAFWTypes.h"
# include "COLLADAFWVisualScene.h"
# include "COLLADAFWArrayPrimitiveType.h"
2010-09-04 19:27:04 +00:00
# include "COLLADAFWLibraryNodes.h"
2010-12-14 21:46:03 +00:00
# include "COLLADAFWCamera.h"
# include "COLLADAFWLight.h"
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
# include "COLLADASaxFWLLoader.h"
2011-03-23 14:25:35 +00:00
# include "COLLADASaxFWLIExtraDataCallbackHandler.h"
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2012-06-12 21:25:29 +00:00
extern " C " {
2011-01-07 18:36:47 +00:00
# include "BLI_listbase.h"
# include "BLI_math.h"
# include "BLI_string.h"
# include "BLI_utildefines.h"
2013-02-13 16:00:46 +00:00
# include "BLI_fileops.h"
2011-01-07 18:36:47 +00:00
2011-11-05 13:00:39 +00:00
# include "BKE_camera.h"
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
# include "BKE_main.h"
2011-11-05 13:11:49 +00:00
# include "BKE_lamp.h"
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
# include "BKE_library.h"
# include "BKE_texture.h"
# include "BKE_fcurve.h"
# include "BKE_depsgraph.h"
2009-11-29 14:38:50 +00:00
# include "BKE_scene.h"
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
# include "BKE_global.h"
# include "BKE_material.h"
2010-10-05 00:05:14 +00:00
# include "BKE_image.h"
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2012-09-03 22:04:14 +00:00
# include "BLI_path_util.h"
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
# include "DNA_camera_types.h"
2010-10-05 00:05:14 +00:00
# include "DNA_lamp_types.h"
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2010-10-09 21:17:14 +00:00
# include "RNA_access.h"
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
# include "MEM_guardedalloc.h"
2013-02-08 19:52:02 +00:00
# include "WM_api.h"
# include "WM_types.h"
2012-06-12 21:25:29 +00:00
}
2011-03-23 14:25:35 +00:00
# include "ExtraHandler.h"
2011-09-05 20:41:58 +00:00
# include "ErrorHandler.h"
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
# include "DocumentImporter.h"
2011-03-09 14:16:21 +00:00
# include "TransformReader.h"
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2011-03-23 14:25:35 +00:00
# include "collada_internal.h"
2010-10-05 00:05:14 +00:00
# include "collada_utils.h"
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2010-10-05 00:05:14 +00:00
/*
2012-10-04 13:26:15 +00:00
* COLLADA Importer limitations :
* - no multiple scene import , all objects are added to active scene
2010-10-05 00:05:14 +00:00
*/
2010-02-15 16:18:21 +00:00
2010-10-05 00:05:14 +00:00
// #define COLLADA_DEBUG
2010-02-15 16:18:21 +00:00
// creates empties for each imported bone on layer 2, for debugging
// #define ARMATURE_TEST
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2013-02-09 16:19:30 +00:00
DocumentImporter : : DocumentImporter ( bContext * C , const ImportSettings * import_settings ) :
2013-02-10 17:06:05 +00:00
import_settings ( import_settings ) ,
2011-03-25 09:52:36 +00:00
mImportStage ( General ) ,
mContext ( C ) ,
2013-02-26 21:58:06 +00:00
armature_importer ( & unit_converter , & mesh_importer , CTX_data_scene ( C ) ) ,
2011-03-25 09:52:36 +00:00
mesh_importer ( & unit_converter , & armature_importer , CTX_data_scene ( C ) ) ,
anim_importer ( & unit_converter , & armature_importer , CTX_data_scene ( C ) )
2012-06-12 22:05:33 +00:00
{
}
2011-03-25 09:52:36 +00:00
2011-03-25 11:07:57 +00:00
DocumentImporter : : ~ DocumentImporter ( )
{
2011-03-28 09:31:44 +00:00
TagsMap : : iterator etit ;
2011-03-25 11:07:57 +00:00
etit = uid_tags_map . begin ( ) ;
2012-06-12 22:05:33 +00:00
while ( etit ! = uid_tags_map . end ( ) ) {
2011-03-25 11:07:57 +00:00
delete etit - > second ;
etit + + ;
}
}
2011-03-25 09:52:36 +00:00
bool DocumentImporter : : import ( )
{
2011-09-05 20:41:58 +00:00
ErrorHandler errorHandler ;
COLLADASaxFWL : : Loader loader ( & errorHandler ) ;
2011-03-25 09:52:36 +00:00
COLLADAFW : : Root root ( & loader , this ) ;
2011-08-14 16:15:41 +00:00
ExtraHandler * ehandler = new ExtraHandler ( this , & ( this - > anim_importer ) ) ;
2011-03-25 09:52:36 +00:00
loader . registerExtraDataCallbackHandler ( ehandler ) ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2012-05-03 21:32:49 +00:00
// deselect all to select new objects
2012-05-05 14:33:36 +00:00
BKE_scene_base_deselect_all ( CTX_data_scene ( mContext ) ) ;
2012-05-03 21:32:49 +00:00
2013-02-09 16:19:30 +00:00
std : : string mFilename = std : : string ( this - > import_settings - > filepath ) ;
2013-02-09 00:23:59 +00:00
const std : : string encodedFilename = bc_url_encode ( mFilename ) ;
if ( ! root . loadDocument ( encodedFilename ) ) {
2012-03-17 06:37:26 +00:00
fprintf ( stderr , " COLLADAFW::Root::loadDocument() returned false on 1st pass \n " ) ;
2011-03-25 09:52:36 +00:00
return false ;
2012-03-17 06:37:26 +00:00
}
2011-03-25 09:52:36 +00:00
2012-03-24 07:52:14 +00:00
if ( errorHandler . hasError ( ) )
2011-09-05 20:41:58 +00:00
return false ;
2011-03-25 09:52:36 +00:00
/** TODO set up scene graph and such here */
mImportStage = Controller ;
COLLADASaxFWL : : Loader loader2 ;
COLLADAFW : : Root root2 ( & loader2 , this ) ;
2013-02-09 00:23:59 +00:00
if ( ! root2 . loadDocument ( encodedFilename ) ) {
2012-03-17 06:37:26 +00:00
fprintf ( stderr , " COLLADAFW::Root::loadDocument() returned false on 2nd pass \n " ) ;
2011-03-25 09:52:36 +00:00
return false ;
2012-03-17 06:37:26 +00:00
}
2011-03-25 09:52:36 +00:00
delete ehandler ;
2013-03-02 15:58:13 +00:00
//XXX No longer needed (geometries are now created as bmesh)
//mesh_importer.bmeshConversion();
2012-05-03 21:32:49 +00:00
2011-03-25 09:52:36 +00:00
return true ;
}
void DocumentImporter : : cancel ( const COLLADAFW : : String & errorMessage )
{
// TODO: if possible show error info
//
// Should we get rid of invisible Meshes that were created so far
// or maybe create objects at coordinate space origin?
//
// The latter sounds better.
}
2012-05-03 21:32:49 +00:00
void DocumentImporter : : start ( )
{
}
2011-03-25 09:52:36 +00:00
void DocumentImporter : : finish ( )
{
2012-06-12 22:05:33 +00:00
if ( mImportStage ! = General )
2011-03-25 09:52:36 +00:00
return ;
2013-02-17 18:33:10 +00:00
Main * bmain = CTX_data_main ( mContext ) ;
// TODO: create a new scene except the selected <visual_scene> - use current blender scene for it
Scene * sce = CTX_data_scene ( mContext ) ;
2013-07-29 21:51:53 +00:00
unit_converter . calculate_scale ( * sce ) ;
2013-02-17 18:33:10 +00:00
2013-07-29 22:15:04 +00:00
std : : vector < Object * > * objects_to_scale = new std : : vector < Object * > ( ) ;
2011-03-25 09:52:36 +00:00
/** TODO Break up and put into 2-pass parsing of DAE */
2012-06-12 22:05:33 +00:00
std : : vector < const COLLADAFW : : VisualScene * > : : iterator it ;
2011-03-25 09:52:36 +00:00
for ( it = vscenes . begin ( ) ; it ! = vscenes . end ( ) ; it + + ) {
PointerRNA sceneptr , unit_settings ;
PropertyRNA * system , * scale ;
2011-01-28 12:56:30 +00:00
2011-03-25 09:52:36 +00:00
// for scene unit settings: system, scale_length
2013-02-09 16:19:30 +00:00
2011-03-25 09:52:36 +00:00
RNA_id_pointer_create ( & sce - > id , & sceneptr ) ;
unit_settings = RNA_pointer_get ( & sceneptr , " unit_settings " ) ;
system = RNA_struct_find_property ( & unit_settings , " system " ) ;
scale = RNA_struct_find_property ( & unit_settings , " scale_length " ) ;
2013-02-09 16:19:30 +00:00
if ( this - > import_settings - > import_units ) {
switch ( unit_converter . isMetricSystem ( ) ) {
case UnitConverter : : Metric :
RNA_property_enum_set ( & unit_settings , system , USER_UNIT_METRIC ) ;
break ;
case UnitConverter : : Imperial :
RNA_property_enum_set ( & unit_settings , system , USER_UNIT_IMPERIAL ) ;
break ;
default :
RNA_property_enum_set ( & unit_settings , system , USER_UNIT_NONE ) ;
break ;
}
float unit_factor = unit_converter . getLinearMeter ( ) ;
RNA_property_float_set ( & unit_settings , scale , unit_factor ) ;
fprintf ( stdout , " Collada: Adjusting Blender units to Importset units: %f. \n " , unit_factor ) ;
}
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2013-02-09 16:19:30 +00:00
// Write nodes to scene
const COLLADAFW : : NodePointerArray & roots = ( * it ) - > getRootNodes ( ) ;
2011-03-25 09:52:36 +00:00
for ( unsigned int i = 0 ; i < roots . getCount ( ) ; i + + ) {
2013-07-29 22:15:04 +00:00
std : : vector < Object * > * objects_done = write_node ( roots [ i ] , NULL , sce , NULL , false ) ;
objects_to_scale - > insert ( objects_to_scale - > end ( ) , objects_done - > begin ( ) , objects_done - > end ( ) ) ;
2010-09-04 19:27:04 +00:00
}
2013-02-08 19:52:02 +00:00
2013-02-09 16:19:30 +00:00
// update scene
2013-02-21 19:33:04 +00:00
DAG_relations_tag_update ( bmain ) ;
2013-02-08 19:52:02 +00:00
WM_event_add_notifier ( mContext , NC_OBJECT | ND_TRANSFORM , NULL ) ;
2011-03-25 09:52:36 +00:00
}
2012-08-12 17:13:07 +00:00
2013-01-21 13:45:49 +00:00
mesh_importer . optimize_material_assignements ( ) ;
2012-08-12 17:13:07 +00:00
2011-07-26 18:28:07 +00:00
armature_importer . set_tags_map ( this - > uid_tags_map ) ;
2011-03-25 09:52:36 +00:00
armature_importer . make_armatures ( mContext ) ;
2013-01-21 13:45:49 +00:00
armature_importer . make_shape_keys ( ) ;
2013-02-21 19:33:04 +00:00
DAG_relations_tag_update ( bmain ) ;
2010-09-04 19:27:04 +00:00
2009-11-29 14:38:50 +00:00
#if 0
2011-03-25 09:52:36 +00:00
armature_importer . fix_animation ( ) ;
2009-11-29 14:38:50 +00:00
# endif
2012-06-12 22:05:33 +00:00
for ( std : : vector < const COLLADAFW : : VisualScene * > : : iterator it = vscenes . begin ( ) ; it ! = vscenes . end ( ) ; it + + ) {
2011-03-25 09:52:36 +00:00
const COLLADAFW : : NodePointerArray & roots = ( * it ) - > getRootNodes ( ) ;
2009-11-29 14:38:50 +00:00
2013-02-20 00:06:31 +00:00
for ( unsigned int i = 0 ; i < roots . getCount ( ) ; i + + ) {
2012-04-29 15:47:02 +00:00
translate_anim_recursive ( roots [ i ] , NULL , NULL ) ;
2013-02-20 00:06:31 +00:00
}
2011-03-25 09:52:36 +00:00
}
2009-11-29 14:38:50 +00:00
2011-03-25 09:52:36 +00:00
if ( libnode_ob . size ( ) ) {
Scene * sce = CTX_data_scene ( mContext ) ;
2010-09-04 19:27:04 +00:00
2011-03-25 09:52:36 +00:00
fprintf ( stderr , " got %d library nodes to free \n " , ( int ) libnode_ob . size ( ) ) ;
// free all library_nodes
2012-06-12 22:05:33 +00:00
std : : vector < Object * > : : iterator it ;
2011-03-25 09:52:36 +00:00
for ( it = libnode_ob . begin ( ) ; it ! = libnode_ob . end ( ) ; it + + ) {
Object * ob = * it ;
2012-05-05 14:33:36 +00:00
Base * base = BKE_scene_base_find ( sce , ob ) ;
2011-03-25 09:52:36 +00:00
if ( base ) {
BLI_remlink ( & sce - > base , base ) ;
2012-05-05 14:03:12 +00:00
BKE_libblock_free_us ( & G . main - > object , base - > object ) ;
2012-06-12 22:05:33 +00:00
if ( sce - > basact = = base )
sce - > basact = NULL ;
2011-03-25 09:52:36 +00:00
MEM_freeN ( base ) ;
}
2010-09-04 19:27:04 +00:00
}
2011-03-25 09:52:36 +00:00
libnode_ob . clear ( ) ;
2013-02-21 19:33:04 +00:00
DAG_relations_tag_update ( bmain ) ;
2009-11-29 14:38:50 +00:00
}
2013-07-29 22:15:04 +00:00
bc_match_scale ( objects_to_scale , unit_converter , ! this - > import_settings - > import_units ) ;
2011-03-25 09:52:36 +00:00
}
2009-11-29 14:38:50 +00:00
2011-03-25 09:52:36 +00:00
void DocumentImporter : : translate_anim_recursive ( COLLADAFW : : Node * node , COLLADAFW : : Node * par = NULL , Object * parob = NULL )
{
2012-03-22 13:35:52 +00:00
// The split in #29246, rootmap must point at actual root when
2013-01-21 13:45:49 +00:00
// calculating bones in apply_curves_as_matrix. - actual root is the root node.
2012-03-22 13:35:52 +00:00
// This has to do with inverse bind poses being world space
// (the sources for skinned bones' restposes) and the way
// non-skinning nodes have their "restpose" recursively calculated.
// XXX TODO: design issue, how to support unrelated joints taking
// part in skinning.
if ( par ) { // && par->getType() == COLLADAFW::Node::JOINT) {
2011-03-25 09:52:36 +00:00
// par is root if there's no corresp. key in root_map
if ( root_map . find ( par - > getUniqueId ( ) ) = = root_map . end ( ) )
2013-01-21 13:45:49 +00:00
root_map [ node - > getUniqueId ( ) ] = node ;
2011-03-25 09:52:36 +00:00
else
root_map [ node - > getUniqueId ( ) ] = root_map [ par - > getUniqueId ( ) ] ;
}
2009-11-29 14:38:50 +00:00
2012-06-12 22:05:33 +00:00
#if 0
COLLADAFW : : Transformation : : TransformationType types [ ] = {
2011-03-25 09:52:36 +00:00
COLLADAFW : : Transformation : : ROTATE ,
COLLADAFW : : Transformation : : SCALE ,
COLLADAFW : : Transformation : : TRANSLATE ,
COLLADAFW : : Transformation : : MATRIX
} ;
2009-11-29 14:38:50 +00:00
2012-06-12 22:05:33 +00:00
Object * ob ;
# endif
2011-03-25 09:52:36 +00:00
unsigned int i ;
2009-11-29 14:38:50 +00:00
2013-02-20 00:06:31 +00:00
if ( node - > getType ( ) = = COLLADAFW : : Node : : JOINT & & par = = NULL ) {
2013-02-20 00:13:34 +00:00
// For Skeletons without root node we have to simulate the
// root node here and recursively enter the same function
// XXX: maybe this can be made more elegant.
2013-02-20 00:06:31 +00:00
translate_anim_recursive ( node , node , parob ) ;
}
else {
2013-07-15 11:01:23 +00:00
anim_importer . translate_Animations ( node , root_map , object_map , FW_object_map ) ;
2013-02-20 00:06:31 +00:00
COLLADAFW : : NodePointerArray & children = node - > getChildNodes ( ) ;
for ( i = 0 ; i < children . getCount ( ) ; i + + ) {
translate_anim_recursive ( children [ i ] , node , NULL ) ;
}
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
}
2011-03-25 09:52:36 +00:00
}
/** When this method is called, the writer must write the global document asset.
2012-06-12 22:05:33 +00:00
* \ return The writer should return true , if writing succeeded , false otherwise . */
bool DocumentImporter : : writeGlobalAsset ( const COLLADAFW : : FileInfo * asset )
2011-03-25 09:52:36 +00:00
{
unit_converter . read_asset ( asset ) ;
return true ;
}
/** When this method is called, the writer must write the scene.
2012-06-12 22:05:33 +00:00
* \ return The writer should return true , if writing succeeded , false otherwise . */
bool DocumentImporter : : writeScene ( const COLLADAFW : : Scene * scene )
2011-03-25 09:52:36 +00:00
{
// XXX could store the scene id, but do nothing for now
return true ;
}
2012-06-12 22:05:33 +00:00
Object * DocumentImporter : : create_camera_object ( COLLADAFW : : InstanceCamera * camera , Scene * sce )
2011-03-25 09:52:36 +00:00
{
const COLLADAFW : : UniqueId & cam_uid = camera - > getInstanciatedObjectId ( ) ;
2012-10-21 05:46:41 +00:00
if ( uid_camera_map . find ( cam_uid ) = = uid_camera_map . end ( ) ) {
2012-08-05 10:23:34 +00:00
// fprintf(stderr, "Couldn't find camera by UID.\n");
2011-03-25 09:52:36 +00:00
return NULL ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
}
2012-05-03 21:32:49 +00:00
Object * ob = bc_add_object ( sce , OB_CAMERA , NULL ) ;
2011-03-25 09:52:36 +00:00
Camera * cam = uid_camera_map [ cam_uid ] ;
2012-06-12 22:05:33 +00:00
Camera * old_cam = ( Camera * ) ob - > data ;
2011-03-25 09:52:36 +00:00
ob - > data = cam ;
old_cam - > id . us - - ;
if ( old_cam - > id . us = = 0 )
2012-05-05 14:03:12 +00:00
BKE_libblock_free ( & G . main - > camera , old_cam ) ;
2011-03-25 09:52:36 +00:00
return ob ;
}
2012-06-12 22:05:33 +00:00
Object * DocumentImporter : : create_lamp_object ( COLLADAFW : : InstanceLight * lamp , Scene * sce )
2011-03-25 09:52:36 +00:00
{
const COLLADAFW : : UniqueId & lamp_uid = lamp - > getInstanciatedObjectId ( ) ;
2012-10-21 05:46:41 +00:00
if ( uid_lamp_map . find ( lamp_uid ) = = uid_lamp_map . end ( ) ) {
2012-03-31 00:59:17 +00:00
fprintf ( stderr , " Couldn't find lamp by UID. \n " ) ;
2011-03-25 09:52:36 +00:00
return NULL ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
}
2012-05-03 21:32:49 +00:00
Object * ob = bc_add_object ( sce , OB_LAMP , NULL ) ;
2011-03-25 09:52:36 +00:00
Lamp * la = uid_lamp_map [ lamp_uid ] ;
2012-06-12 22:05:33 +00:00
Lamp * old_lamp = ( Lamp * ) ob - > data ;
2011-03-25 09:52:36 +00:00
ob - > data = la ;
old_lamp - > id . us - - ;
if ( old_lamp - > id . us = = 0 )
2012-05-05 14:03:12 +00:00
BKE_libblock_free ( & G . main - > lamp , old_lamp ) ;
2011-03-25 09:52:36 +00:00
return ob ;
}
2012-06-12 22:05:33 +00:00
Object * DocumentImporter : : create_instance_node ( Object * source_ob , COLLADAFW : : Node * source_node , COLLADAFW : : Node * instance_node , Scene * sce , bool is_library_node )
2011-03-25 09:52:36 +00:00
{
2012-03-22 13:35:52 +00:00
fprintf ( stderr , " create <instance_node> under node id=%s from node id=%s \n " , instance_node ? instance_node - > getOriginalId ( ) . c_str ( ) : NULL , source_node ? source_node - > getOriginalId ( ) . c_str ( ) : NULL ) ;
2012-05-05 14:03:12 +00:00
Object * obn = BKE_object_copy ( source_ob ) ;
2013-02-21 19:33:04 +00:00
DAG_id_tag_update ( & obn - > id , OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME ) ;
2012-05-05 14:33:36 +00:00
BKE_scene_base_add ( sce , obn ) ;
2011-03-25 09:52:36 +00:00
if ( instance_node ) {
anim_importer . read_node_transform ( instance_node , obn ) ;
// if we also have a source_node (always ;), take its
// transformation matrix and apply it to the newly instantiated
// object to account for node hierarchy transforms in
// .dae
2012-03-24 07:52:14 +00:00
if ( source_node ) {
2011-03-25 09:52:36 +00:00
COLLADABU : : Math : : Matrix4 mat4 = source_node - > getTransformationMatrix ( ) ;
COLLADABU : : Math : : Matrix4 bmat4 = mat4 . transpose ( ) ; // transpose to get blender row-major order
float mat [ 4 ] [ 4 ] ;
for ( int i = 0 ; i < 4 ; i + + ) {
for ( int j = 0 ; j < 4 ; j + + ) {
mat [ i ] [ j ] = bmat4 [ i ] [ j ] ;
}
}
// calc new matrix and apply
2013-05-26 18:36:25 +00:00
mul_m4_m4m4 ( obn - > obmat , obn - > obmat , mat ) ;
2012-05-05 14:03:12 +00:00
BKE_object_apply_mat4 ( obn , obn - > obmat , 0 , 0 ) ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
}
}
2011-03-25 09:52:36 +00:00
else {
anim_importer . read_node_transform ( source_node , obn ) ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
}
2010-09-04 19:27:04 +00:00
2013-02-21 19:33:04 +00:00
/*DAG_relations_tag_update(CTX_data_main(mContext));*/
2011-03-25 09:52:36 +00:00
COLLADAFW : : NodePointerArray & children = source_node - > getChildNodes ( ) ;
if ( children . getCount ( ) ) {
for ( unsigned int i = 0 ; i < children . getCount ( ) ; i + + ) {
COLLADAFW : : Node * child_node = children [ i ] ;
const COLLADAFW : : UniqueId & child_id = child_node - > getUniqueId ( ) ;
if ( object_map . find ( child_id ) = = object_map . end ( ) )
continue ;
COLLADAFW : : InstanceNodePointerArray & inodes = child_node - > getInstanceNodes ( ) ;
Object * new_child = NULL ;
if ( inodes . getCount ( ) ) { // \todo loop through instance nodes
const COLLADAFW : : UniqueId & id = inodes [ 0 ] - > getInstanciatedObjectId ( ) ;
2012-06-16 09:16:24 +00:00
fprintf ( stderr , " Doing %d child nodes \n " , ( int ) node_map . count ( id ) ) ;
2012-04-30 23:51:09 +00:00
new_child = create_instance_node ( object_map . find ( id ) - > second , node_map [ id ] , child_node , sce , is_library_node ) ;
2011-03-09 14:16:21 +00:00
}
2011-03-25 09:52:36 +00:00
else {
2012-04-30 23:51:09 +00:00
new_child = create_instance_node ( object_map . find ( child_id ) - > second , child_node , NULL , sce , is_library_node ) ;
2011-03-25 09:52:36 +00:00
}
bc_set_parent ( new_child , obn , mContext , true ) ;
2010-09-04 19:27:04 +00:00
2011-03-25 09:52:36 +00:00
if ( is_library_node )
libnode_ob . push_back ( new_child ) ;
}
}
2010-09-04 19:27:04 +00:00
2012-03-17 06:37:26 +00:00
return obn ;
2011-03-25 09:52:36 +00:00
}
2010-09-04 19:27:04 +00:00
2013-01-21 13:45:49 +00:00
// to create constraints off node <extra> tags. Assumes only constraint data in
// current <extra> with blender profile.
2013-02-10 17:06:05 +00:00
void DocumentImporter : : create_constraints ( ExtraTags * et , Object * ob )
{
if ( et & & et - > isProfile ( " blender " ) ) {
2013-01-21 13:45:49 +00:00
std : : string name ;
short * type = 0 ;
et - > setData ( " type " , type ) ;
2013-02-01 15:17:51 +00:00
BKE_add_ob_constraint ( ob , " Test_con " , * type ) ;
2013-01-21 13:45:49 +00:00
}
}
2013-02-10 22:14:56 +00:00
std : : vector < Object * > * DocumentImporter : : write_node ( COLLADAFW : : Node * node , COLLADAFW : : Node * parent_node , Scene * sce , Object * par , bool is_library_node )
2011-03-25 09:52:36 +00:00
{
Object * ob = NULL ;
bool is_joint = node - > getType ( ) = = COLLADAFW : : Node : : JOINT ;
2012-03-17 06:37:26 +00:00
bool read_transform = true ;
2013-02-08 19:52:02 +00:00
std : : string id = node - > getOriginalId ( ) ;
std : : string name = node - > getName ( ) ;
2010-09-04 19:27:04 +00:00
2013-01-21 13:45:49 +00:00
std : : vector < Object * > * objects_done = new std : : vector < Object * > ( ) ;
2013-07-29 22:15:04 +00:00
std : : vector < Object * > * root_objects = new std : : vector < Object * > ( ) ;
2013-02-04 00:18:09 +00:00
2013-02-08 19:52:02 +00:00
fprintf ( stderr ,
" Writing node id='%s', name='%s' \n " ,
id . c_str ( ) ,
name . c_str ( ) ) ;
2011-03-25 09:52:36 +00:00
if ( is_joint ) {
2013-02-20 00:06:31 +00:00
if ( parent_node = = NULL ) {
2013-02-20 00:13:34 +00:00
// A Joint on root level is a skeleton without root node.
// Here we add the armature "on the fly":
2013-02-20 00:06:31 +00:00
par = bc_add_object ( sce , OB_ARMATURE , std : : string ( " Armature " ) . c_str ( ) ) ;
objects_done - > push_back ( par ) ;
2013-07-29 22:15:04 +00:00
root_objects - > push_back ( par ) ;
2013-04-29 19:15:53 +00:00
object_map . insert ( std : : pair < COLLADAFW : : UniqueId , Object * > ( node - > getUniqueId ( ) , par ) ) ;
2013-02-20 00:06:31 +00:00
node_map [ node - > getUniqueId ( ) ] = node ;
}
2013-07-14 17:21:12 +00:00
if ( parent_node = = NULL | | parent_node - > getType ( ) ! = COLLADAFW : : Node : : JOINT ) {
armature_importer . add_root_joint ( node , par ) ;
}
2013-02-20 00:06:31 +00:00
if ( parent_node = = NULL ) {
2013-02-20 00:13:34 +00:00
// for skeletons without root node all has been done above.
// Skeletons with root node are handled further down.
2013-07-29 22:15:04 +00:00
return root_objects ;
2013-02-20 00:06:31 +00:00
}
2010-09-04 19:27:04 +00:00
}
2011-03-25 09:52:36 +00:00
else {
COLLADAFW : : InstanceGeometryPointerArray & geom = node - > getInstanceGeometries ( ) ;
COLLADAFW : : InstanceCameraPointerArray & camera = node - > getInstanceCameras ( ) ;
COLLADAFW : : InstanceLightPointerArray & lamp = node - > getInstanceLights ( ) ;
COLLADAFW : : InstanceControllerPointerArray & controller = node - > getInstanceControllers ( ) ;
COLLADAFW : : InstanceNodePointerArray & inst_node = node - > getInstanceNodes ( ) ;
2011-06-20 10:50:17 +00:00
size_t geom_done = 0 ;
size_t camera_done = 0 ;
size_t lamp_done = 0 ;
size_t controller_done = 0 ;
size_t inst_done = 0 ;
2011-03-25 09:52:36 +00:00
// XXX linking object with the first <instance_geometry>, though a node may have more of them...
// maybe join multiple <instance_...> meshes into 1, and link object with it? not sure...
// <instance_geometry>
while ( geom_done < geom . getCount ( ) ) {
ob = mesh_importer . create_mesh_object ( node , geom [ geom_done ] , false , uid_material_map ,
2012-06-12 22:05:33 +00:00
material_texture_mapping_map ) ;
2013-02-08 00:28:58 +00:00
if ( ob = = NULL ) {
fprintf ( stderr ,
" <node id= \" %s \" , name= \" %s \" >...contains a reference to an unknown instance_mesh. \n " ,
id . c_str ( ) ,
name . c_str ( ) ) ;
}
else {
objects_done - > push_back ( ob ) ;
2013-07-29 22:15:04 +00:00
if ( parent_node = = NULL ) {
root_objects - > push_back ( ob ) ;
}
2013-02-08 00:28:58 +00:00
}
2011-09-04 22:14:28 +00:00
+ + geom_done ;
2011-03-25 09:52:36 +00:00
}
while ( camera_done < camera . getCount ( ) ) {
ob = create_camera_object ( camera [ camera_done ] , sce ) ;
2012-08-05 10:23:34 +00:00
if ( ob = = NULL ) {
2013-02-08 00:28:58 +00:00
std : : string id = node - > getOriginalId ( ) ;
2012-08-05 10:23:34 +00:00
std : : string name = node - > getName ( ) ;
fprintf ( stderr , " <node id= \" %s \" , name= \" %s \" >...contains a reference to an unknown instance_camera. \n " , id . c_str ( ) , name . c_str ( ) ) ;
}
2013-07-29 22:15:04 +00:00
else {
2012-08-05 10:23:34 +00:00
objects_done - > push_back ( ob ) ;
2013-07-29 22:15:04 +00:00
if ( parent_node = = NULL ) {
root_objects - > push_back ( ob ) ;
}
}
2011-09-04 22:14:28 +00:00
+ + camera_done ;
2011-03-25 09:52:36 +00:00
}
while ( lamp_done < lamp . getCount ( ) ) {
ob = create_lamp_object ( lamp [ lamp_done ] , sce ) ;
2012-04-30 23:51:09 +00:00
objects_done - > push_back ( ob ) ;
2013-07-29 22:15:04 +00:00
if ( parent_node = = NULL ) {
root_objects - > push_back ( ob ) ;
}
2011-09-04 22:14:28 +00:00
+ + lamp_done ;
2011-03-25 09:52:36 +00:00
}
while ( controller_done < controller . getCount ( ) ) {
2012-06-12 22:05:33 +00:00
COLLADAFW : : InstanceGeometry * geom = ( COLLADAFW : : InstanceGeometry * ) controller [ controller_done ] ;
2011-03-25 09:52:36 +00:00
ob = mesh_importer . create_mesh_object ( node , geom , true , uid_material_map , material_texture_mapping_map ) ;
2012-04-30 23:51:09 +00:00
objects_done - > push_back ( ob ) ;
2013-07-29 22:15:04 +00:00
if ( parent_node = = NULL ) {
root_objects - > push_back ( ob ) ;
}
2011-03-25 09:52:36 +00:00
+ + controller_done ;
}
// XXX instance_node is not supported yet
while ( inst_done < inst_node . getCount ( ) ) {
const COLLADAFW : : UniqueId & node_id = inst_node [ inst_done ] - > getInstanciatedObjectId ( ) ;
if ( object_map . find ( node_id ) = = object_map . end ( ) ) {
2012-03-22 13:35:52 +00:00
fprintf ( stderr , " Cannot find object for node referenced by <instance_node name= \" %s \" >. \n " , inst_node [ inst_done ] - > getName ( ) . c_str ( ) ) ;
2011-03-25 09:52:36 +00:00
ob = NULL ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
}
2011-03-25 09:52:36 +00:00
else {
2012-05-01 20:08:23 +00:00
std : : pair < std : : multimap < COLLADAFW : : UniqueId , Object * > : : iterator , std : : multimap < COLLADAFW : : UniqueId , Object * > : : iterator > pair_iter = object_map . equal_range ( node_id ) ;
for ( std : : multimap < COLLADAFW : : UniqueId , Object * > : : iterator it2 = pair_iter . first ; it2 ! = pair_iter . second ; it2 + + ) {
2012-04-30 23:51:09 +00:00
Object * source_ob = ( Object * ) it2 - > second ;
COLLADAFW : : Node * source_node = node_map [ node_id ] ;
ob = create_instance_node ( source_ob , source_node , node , sce , is_library_node ) ;
2013-07-30 12:18:24 +00:00
objects_done - > push_back ( ob ) ;
if ( parent_node = = NULL ) {
root_objects - > push_back ( ob ) ;
}
2013-07-29 22:15:04 +00:00
}
}
2011-03-25 09:52:36 +00:00
+ + inst_done ;
2012-03-17 06:37:26 +00:00
read_transform = false ;
2011-03-25 09:52:36 +00:00
}
2013-01-21 13:45:49 +00:00
2011-03-25 09:52:36 +00:00
// if node is empty - create empty object
// XXX empty node may not mean it is empty object, not sure about this
if ( ( geom_done + camera_done + lamp_done + controller_done + inst_done ) < 1 ) {
2013-01-21 13:45:49 +00:00
//Check if Object is armature, by checking if immediate child is a JOINT node.
2013-02-10 17:06:05 +00:00
if ( is_armature ( node ) ) {
2013-02-17 18:33:10 +00:00
ob = bc_add_object ( sce , OB_ARMATURE , name . c_str ( ) ) ;
2013-02-10 17:06:05 +00:00
}
else {
ob = bc_add_object ( sce , OB_EMPTY , NULL ) ;
}
2012-04-30 23:51:09 +00:00
objects_done - > push_back ( ob ) ;
2013-07-29 22:15:04 +00:00
if ( parent_node = = NULL ) {
root_objects - > push_back ( ob ) ;
}
2011-03-25 09:52:36 +00:00
}
2012-03-17 06:37:26 +00:00
// XXX: if there're multiple instances, only one is stored
2013-07-29 22:15:04 +00:00
if ( ! ob ) return root_objects ;
2013-02-10 22:14:56 +00:00
2012-05-01 20:08:23 +00:00
for ( std : : vector < Object * > : : iterator it = objects_done - > begin ( ) ; it ! = objects_done - > end ( ) ; + + it ) {
2012-04-30 23:51:09 +00:00
ob = * it ;
std : : string nodename = node - > getName ( ) . size ( ) ? node - > getName ( ) : node - > getOriginalId ( ) ;
2012-06-12 22:05:33 +00:00
rename_id ( & ob - > id , ( char * ) nodename . c_str ( ) ) ;
2013-04-29 19:15:53 +00:00
object_map . insert ( std : : pair < COLLADAFW : : UniqueId , Object * > ( node - > getUniqueId ( ) , ob ) ) ;
2012-04-30 23:51:09 +00:00
node_map [ node - > getUniqueId ( ) ] = node ;
2009-11-29 14:38:50 +00:00
2012-04-30 23:51:09 +00:00
if ( is_library_node )
libnode_ob . push_back ( ob ) ;
}
2010-09-04 19:27:04 +00:00
2013-02-10 22:14:56 +00:00
2013-01-21 13:45:49 +00:00
//create_constraints(et,ob);
2011-03-25 09:52:36 +00:00
}
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2012-05-01 20:08:23 +00:00
for ( std : : vector < Object * > : : iterator it = objects_done - > begin ( ) ; it ! = objects_done - > end ( ) ; + + it ) {
2012-06-12 22:05:33 +00:00
ob = * it ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2012-04-30 23:51:09 +00:00
if ( read_transform )
2012-06-12 22:05:33 +00:00
anim_importer . read_node_transform ( node , ob ) ; // overwrites location set earlier
2010-04-08 11:57:23 +00:00
2012-04-30 23:51:09 +00:00
if ( ! is_joint ) {
2013-07-14 00:34:21 +00:00
if ( par & & ob ) {
ob - > parent = par ;
ob - > partype = PAROBJECT ;
ob - > parsubstr [ 0 ] = 0 ;
//bc_set_parent(ob, par, mContext, false);
}
2012-04-30 23:51:09 +00:00
}
}
2013-07-14 00:34:21 +00:00
2011-03-25 09:52:36 +00:00
// if node has child nodes write them
COLLADAFW : : NodePointerArray & child_nodes = node - > getChildNodes ( ) ;
2013-02-11 20:21:10 +00:00
2013-02-08 12:23:36 +00:00
if ( objects_done - > size ( ) > 0 ) {
ob = * objects_done - > begin ( ) ;
2013-02-11 20:21:10 +00:00
}
else {
ob = NULL ;
}
for ( unsigned int i = 0 ; i < child_nodes . getCount ( ) ; i + + ) {
write_node ( child_nodes [ i ] , node , sce , ob , is_library_node ) ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
}
2013-02-10 22:14:56 +00:00
2013-07-29 22:15:04 +00:00
return root_objects ;
2011-03-25 09:52:36 +00:00
}
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2011-03-25 09:52:36 +00:00
/** When this method is called, the writer must write the entire visual scene.
2013-07-14 00:34:21 +00:00
* Return The writer should return true , if writing succeeded , false otherwise . */
2012-06-12 22:05:33 +00:00
bool DocumentImporter : : writeVisualScene ( const COLLADAFW : : VisualScene * visualScene )
2011-03-25 09:52:36 +00:00
{
2012-06-12 22:05:33 +00:00
if ( mImportStage ! = General )
2011-03-25 09:52:36 +00:00
return true ;
// this method called on post process after writeGeometry, writeMaterial, etc.
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2011-03-25 09:52:36 +00:00
// for each <node> in <visual_scene>:
// create an Object
// if Mesh (previously created in writeGeometry) to which <node> corresponds exists, link Object with that mesh
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2011-03-25 09:52:36 +00:00
// update: since we cannot link a Mesh with Object in
// writeGeometry because <geometry> does not reference <node>,
// we link Objects with Meshes here
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2011-03-25 09:52:36 +00:00
vscenes . push_back ( visualScene ) ;
return true ;
}
/** When this method is called, the writer must handle all nodes contained in the
2012-11-18 01:22:31 +00:00
* library nodes .
* \ return The writer should return true , if writing succeeded , false otherwise . */
2012-06-12 22:05:33 +00:00
bool DocumentImporter : : writeLibraryNodes ( const COLLADAFW : : LibraryNodes * libraryNodes )
2011-03-25 09:52:36 +00:00
{
2012-06-12 22:05:33 +00:00
if ( mImportStage ! = General )
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
return true ;
2011-03-25 09:52:36 +00:00
Scene * sce = CTX_data_scene ( mContext ) ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2011-03-25 09:52:36 +00:00
const COLLADAFW : : NodePointerArray & nodes = libraryNodes - > getNodes ( ) ;
2010-09-04 19:27:04 +00:00
2011-03-25 09:52:36 +00:00
for ( unsigned int i = 0 ; i < nodes . getCount ( ) ; i + + ) {
write_node ( nodes [ i ] , NULL , sce , NULL , true ) ;
}
2010-09-04 19:27:04 +00:00
2011-03-25 09:52:36 +00:00
return true ;
}
2010-09-04 19:27:04 +00:00
2011-03-25 09:52:36 +00:00
/** When this method is called, the writer must write the geometry.
2012-06-12 22:05:33 +00:00
* \ return The writer should return true , if writing succeeded , false otherwise . */
bool DocumentImporter : : writeGeometry ( const COLLADAFW : : Geometry * geom )
2011-03-25 09:52:36 +00:00
{
2012-06-12 22:05:33 +00:00
if ( mImportStage ! = General )
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
return true ;
2011-03-25 09:52:36 +00:00
return mesh_importer . write_geometry ( geom ) ;
}
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2011-03-25 09:52:36 +00:00
/** When this method is called, the writer must write the material.
2012-06-12 22:05:33 +00:00
* \ return The writer should return true , if writing succeeded , false otherwise . */
bool DocumentImporter : : writeMaterial ( const COLLADAFW : : Material * cmat )
2011-03-25 09:52:36 +00:00
{
2012-06-12 22:05:33 +00:00
if ( mImportStage ! = General )
2011-03-25 09:52:36 +00:00
return true ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2011-06-20 12:43:10 +00:00
const std : : string & str_mat_id = cmat - > getName ( ) . size ( ) ? cmat - > getName ( ) : cmat - > getOriginalId ( ) ;
2013-02-05 13:04:01 +00:00
Material * ma = BKE_material_add ( G . main , ( char * ) str_mat_id . c_str ( ) ) ;
2011-03-25 09:52:36 +00:00
this - > uid_effect_map [ cmat - > getInstantiatedEffect ( ) ] = ma ;
this - > uid_material_map [ cmat - > getUniqueId ( ) ] = ma ;
2011-07-24 20:27:27 +00:00
2011-03-25 09:52:36 +00:00
return true ;
}
// create mtex, create texture, set texture image
2012-06-12 22:05:33 +00:00
MTex * DocumentImporter : : create_texture ( COLLADAFW : : EffectCommon * ef , COLLADAFW : : Texture & ctex , Material * ma ,
int i , TexIndexTextureArrayMap & texindex_texarray_map )
2011-03-25 09:52:36 +00:00
{
COLLADAFW : : SamplerPointerArray & samp_array = ef - > getSamplerPointerArray ( ) ;
COLLADAFW : : Sampler * sampler = samp_array [ ctex . getSamplerId ( ) ] ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2011-03-25 09:52:36 +00:00
const COLLADAFW : : UniqueId & ima_uid = sampler - > getSourceImage ( ) ;
if ( uid_image_map . find ( ima_uid ) = = uid_image_map . end ( ) ) {
fprintf ( stderr , " Couldn't find an image by UID. \n " ) ;
return NULL ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
}
2011-03-25 09:52:36 +00:00
ma - > mtex [ i ] = add_mtex ( ) ;
ma - > mtex [ i ] - > texco = TEXCO_UV ;
2013-02-05 13:04:01 +00:00
ma - > mtex [ i ] - > tex = add_texture ( G . main , " Texture " ) ;
2011-03-25 09:52:36 +00:00
ma - > mtex [ i ] - > tex - > type = TEX_IMAGE ;
ma - > mtex [ i ] - > tex - > ima = uid_image_map [ ima_uid ] ;
texindex_texarray_map [ ctex . getTextureMapId ( ) ] . push_back ( ma - > mtex [ i ] ) ;
return ma - > mtex [ i ] ;
}
void DocumentImporter : : write_profile_COMMON ( COLLADAFW : : EffectCommon * ef , Material * ma )
{
COLLADAFW : : EffectCommon : : ShaderType shader = ef - > getShaderType ( ) ;
// blinn
if ( shader = = COLLADAFW : : EffectCommon : : SHADER_BLINN ) {
ma - > spec_shader = MA_SPEC_BLINN ;
ma - > spec = ef - > getShininess ( ) . getFloatValue ( ) ;
}
// phong
else if ( shader = = COLLADAFW : : EffectCommon : : SHADER_PHONG ) {
ma - > spec_shader = MA_SPEC_PHONG ;
ma - > har = ef - > getShininess ( ) . getFloatValue ( ) ;
}
// lambert
else if ( shader = = COLLADAFW : : EffectCommon : : SHADER_LAMBERT ) {
ma - > diff_shader = MA_DIFF_LAMBERT ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
}
2011-03-25 09:52:36 +00:00
// default - lambert
else {
ma - > diff_shader = MA_DIFF_LAMBERT ;
fprintf ( stderr , " Current shader type is not supported, default to lambert. \n " ) ;
}
// reflectivity
ma - > ray_mirror = ef - > getReflectivity ( ) . getFloatValue ( ) ;
// index of refraction
ma - > ang = ef - > getIndexOfRefraction ( ) . getFloatValue ( ) ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2011-03-25 09:52:36 +00:00
int i = 0 ;
COLLADAFW : : Color col ;
MTex * mtex = NULL ;
TexIndexTextureArrayMap texindex_texarray_map ;
// DIFFUSE
// color
if ( ef - > getDiffuse ( ) . isColor ( ) ) {
col = ef - > getDiffuse ( ) . getColor ( ) ;
ma - > r = col . getRed ( ) ;
ma - > g = col . getGreen ( ) ;
ma - > b = col . getBlue ( ) ;
}
// texture
else if ( ef - > getDiffuse ( ) . isTexture ( ) ) {
COLLADAFW : : Texture ctex = ef - > getDiffuse ( ) . getTexture ( ) ;
mtex = create_texture ( ef , ctex , ma , i , texindex_texarray_map ) ;
if ( mtex ! = NULL ) {
mtex - > mapto = MAP_COL ;
ma - > texact = ( int ) i ;
i + + ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
}
2011-03-25 09:52:36 +00:00
}
// AMBIENT
// color
if ( ef - > getAmbient ( ) . isColor ( ) ) {
col = ef - > getAmbient ( ) . getColor ( ) ;
ma - > ambr = col . getRed ( ) ;
ma - > ambg = col . getGreen ( ) ;
ma - > ambb = col . getBlue ( ) ;
}
// texture
else if ( ef - > getAmbient ( ) . isTexture ( ) ) {
COLLADAFW : : Texture ctex = ef - > getAmbient ( ) . getTexture ( ) ;
mtex = create_texture ( ef , ctex , ma , i , texindex_texarray_map ) ;
if ( mtex ! = NULL ) {
mtex - > mapto = MAP_AMB ;
i + + ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
}
2011-03-25 09:52:36 +00:00
}
// SPECULAR
// color
if ( ef - > getSpecular ( ) . isColor ( ) ) {
col = ef - > getSpecular ( ) . getColor ( ) ;
ma - > specr = col . getRed ( ) ;
ma - > specg = col . getGreen ( ) ;
ma - > specb = col . getBlue ( ) ;
}
// texture
else if ( ef - > getSpecular ( ) . isTexture ( ) ) {
COLLADAFW : : Texture ctex = ef - > getSpecular ( ) . getTexture ( ) ;
mtex = create_texture ( ef , ctex , ma , i , texindex_texarray_map ) ;
if ( mtex ! = NULL ) {
mtex - > mapto = MAP_SPEC ;
i + + ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
}
2011-03-25 09:52:36 +00:00
}
// REFLECTIVE
// color
if ( ef - > getReflective ( ) . isColor ( ) ) {
col = ef - > getReflective ( ) . getColor ( ) ;
ma - > mirr = col . getRed ( ) ;
ma - > mirg = col . getGreen ( ) ;
ma - > mirb = col . getBlue ( ) ;
}
// texture
else if ( ef - > getReflective ( ) . isTexture ( ) ) {
COLLADAFW : : Texture ctex = ef - > getReflective ( ) . getTexture ( ) ;
mtex = create_texture ( ef , ctex , ma , i , texindex_texarray_map ) ;
if ( mtex ! = NULL ) {
mtex - > mapto = MAP_REF ;
i + + ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
}
2011-03-25 09:52:36 +00:00
}
// EMISSION
// color
if ( ef - > getEmission ( ) . isColor ( ) ) {
// XXX there is no emission color in blender
// but I am not sure
}
// texture
else if ( ef - > getEmission ( ) . isTexture ( ) ) {
COLLADAFW : : Texture ctex = ef - > getEmission ( ) . getTexture ( ) ;
mtex = create_texture ( ef , ctex , ma , i , texindex_texarray_map ) ;
if ( mtex ! = NULL ) {
mtex - > mapto = MAP_EMIT ;
i + + ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
}
2011-03-25 09:52:36 +00:00
}
2011-06-20 10:28:37 +00:00
2012-03-24 07:52:14 +00:00
if ( ef - > getOpacity ( ) . isTexture ( ) ) {
2011-06-20 10:28:37 +00:00
COLLADAFW : : Texture ctex = ef - > getOpacity ( ) . getTexture ( ) ;
mtex = create_texture ( ef , ctex , ma , i , texindex_texarray_map ) ;
2012-03-24 07:52:14 +00:00
if ( mtex ! = NULL ) {
2011-06-20 10:28:37 +00:00
mtex - > mapto = MAP_ALPHA ;
i + + ;
ma - > spectra = ma - > alpha = 0 ;
2012-06-12 22:05:33 +00:00
ma - > mode | = MA_ZTRANSP | MA_TRANSP ;
2011-06-20 10:28:37 +00:00
}
}
2011-03-25 09:52:36 +00:00
// TRANSPARENT
// color
2012-06-12 22:05:33 +00:00
#if 0
if ( ef - > getOpacity ( ) . isColor ( ) ) {
// XXX don't know what to do here
}
// texture
else if ( ef - > getOpacity ( ) . isTexture ( ) ) {
ctex = ef - > getOpacity ( ) . getTexture ( ) ;
if ( mtex ! = NULL ) mtex - > mapto & = MAP_ALPHA ;
else {
mtex = create_texture ( ef , ctex , ma , i , texindex_texarray_map ) ;
if ( mtex ! = NULL ) mtex - > mapto = MAP_ALPHA ;
}
}
# endif
2011-03-25 09:52:36 +00:00
material_texture_mapping_map [ ma ] = texindex_texarray_map ;
}
/** When this method is called, the writer must write the effect.
2012-06-12 22:05:33 +00:00
* \ return The writer should return true , if writing succeeded , false otherwise . */
2011-03-25 09:52:36 +00:00
2012-06-12 22:05:33 +00:00
bool DocumentImporter : : writeEffect ( const COLLADAFW : : Effect * effect )
2011-03-25 09:52:36 +00:00
{
2012-06-12 22:05:33 +00:00
if ( mImportStage ! = General )
2011-03-25 09:52:36 +00:00
return true ;
const COLLADAFW : : UniqueId & uid = effect - > getUniqueId ( ) ;
2011-07-23 20:49:26 +00:00
2011-03-25 09:52:36 +00:00
if ( uid_effect_map . find ( uid ) = = uid_effect_map . end ( ) ) {
fprintf ( stderr , " Couldn't find a material by UID. \n " ) ;
return true ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
}
2011-03-25 09:52:36 +00:00
Material * ma = uid_effect_map [ uid ] ;
2012-06-12 22:05:33 +00:00
std : : map < COLLADAFW : : UniqueId , Material * > : : iterator iter ;
for ( iter = uid_material_map . begin ( ) ; iter ! = uid_material_map . end ( ) ; iter + + ) {
if ( iter - > second = = ma ) {
2011-07-23 20:49:26 +00:00
this - > FW_object_map [ iter - > first ] = effect ;
break ;
}
}
2011-03-25 09:52:36 +00:00
COLLADAFW : : CommonEffectPointerArray common_efs = effect - > getCommonEffects ( ) ;
if ( common_efs . getCount ( ) < 1 ) {
fprintf ( stderr , " Couldn't find <profile_COMMON>. \n " ) ;
return true ;
}
// XXX TODO: Take all <profile_common>s
// Currently only first <profile_common> is supported
COLLADAFW : : EffectCommon * ef = common_efs [ 0 ] ;
write_profile_COMMON ( ef , ma ) ;
2011-07-18 19:32:51 +00:00
this - > FW_object_map [ effect - > getUniqueId ( ) ] = effect ;
2011-07-23 20:49:26 +00:00
2011-03-25 09:52:36 +00:00
return true ;
}
/** When this method is called, the writer must write the camera.
2012-06-12 22:05:33 +00:00
* \ return The writer should return true , if writing succeeded , false otherwise . */
bool DocumentImporter : : writeCamera ( const COLLADAFW : : Camera * camera )
2011-03-25 09:52:36 +00:00
{
2012-06-12 22:05:33 +00:00
if ( mImportStage ! = General )
2011-03-25 09:52:36 +00:00
return true ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2011-03-25 09:52:36 +00:00
Camera * cam = NULL ;
std : : string cam_id , cam_name ;
cam_id = camera - > getOriginalId ( ) ;
cam_name = camera - > getName ( ) ;
2013-02-05 13:04:01 +00:00
if ( cam_name . size ( ) ) cam = ( Camera * ) BKE_camera_add ( G . main , ( char * ) cam_name . c_str ( ) ) ;
else cam = ( Camera * ) BKE_camera_add ( G . main , ( char * ) cam_id . c_str ( ) ) ;
2011-03-25 09:52:36 +00:00
if ( ! cam ) {
2012-03-31 00:59:17 +00:00
fprintf ( stderr , " Cannot create camera. \n " ) ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
return true ;
}
2011-03-25 09:52:36 +00:00
cam - > clipsta = camera - > getNearClippingPlane ( ) . getValue ( ) ;
cam - > clipend = camera - > getFarClippingPlane ( ) . getValue ( ) ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2011-03-25 09:52:36 +00:00
COLLADAFW : : Camera : : CameraType type = camera - > getCameraType ( ) ;
2012-04-28 06:31:57 +00:00
switch ( type ) {
2012-06-12 22:05:33 +00:00
case COLLADAFW : : Camera : : ORTHOGRAPHIC :
2011-03-25 09:52:36 +00:00
{
cam - > type = CAM_ORTHO ;
}
break ;
2012-06-12 22:05:33 +00:00
case COLLADAFW : : Camera : : PERSPECTIVE :
2011-03-25 09:52:36 +00:00
{
cam - > type = CAM_PERSP ;
}
break ;
2012-06-12 22:05:33 +00:00
case COLLADAFW : : Camera : : UNDEFINED_CAMERATYPE :
2011-03-25 09:52:36 +00:00
{
2012-03-31 00:59:17 +00:00
fprintf ( stderr , " Current camera type is not supported. \n " ) ;
2011-03-25 09:52:36 +00:00
cam - > type = CAM_PERSP ;
}
break ;
}
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2012-04-28 06:31:57 +00:00
switch ( camera - > getDescriptionType ( ) ) {
2012-06-12 22:05:33 +00:00
case COLLADAFW : : Camera : : ASPECTRATIO_AND_Y :
2011-03-25 09:52:36 +00:00
{
2012-04-28 06:31:57 +00:00
switch ( cam - > type ) {
2011-03-25 09:52:36 +00:00
case CAM_ORTHO :
2012-06-12 22:05:33 +00:00
{
2012-08-04 22:18:56 +00:00
double ymag = 2 * camera - > getYMag ( ) . getValue ( ) ;
2012-06-12 22:05:33 +00:00
double aspect = camera - > getAspectRatio ( ) . getValue ( ) ;
double xmag = aspect * ymag ;
cam - > ortho_scale = ( float ) xmag ;
}
break ;
2011-03-25 09:52:36 +00:00
case CAM_PERSP :
default :
2012-06-12 22:05:33 +00:00
{
double yfov = camera - > getYFov ( ) . getValue ( ) ;
double aspect = camera - > getAspectRatio ( ) . getValue ( ) ;
2012-09-03 17:54:04 +00:00
// NOTE: Needs more testing (As we curretnly have no official test data for this)
double xfov = 2.0f * atanf ( aspect * tanf ( DEG2RADF ( yfov ) * 0.5f ) ) ;
cam - > lens = fov_to_focallength ( xfov , cam - > sensor_x ) ;
2012-06-12 22:05:33 +00:00
}
break ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
}
}
2011-03-25 09:52:36 +00:00
break ;
2012-06-12 22:05:33 +00:00
/* XXX correct way to do following four is probably to get also render
2012-10-04 13:26:15 +00:00
* size and determine proper settings from that somehow */
2012-06-12 22:05:33 +00:00
case COLLADAFW : : Camera : : ASPECTRATIO_AND_X :
case COLLADAFW : : Camera : : SINGLE_X :
case COLLADAFW : : Camera : : X_AND_Y :
2011-03-25 09:52:36 +00:00
{
2012-04-28 06:31:57 +00:00
switch ( cam - > type ) {
2011-03-25 09:52:36 +00:00
case CAM_ORTHO :
2012-08-04 22:18:56 +00:00
cam - > ortho_scale = ( float ) camera - > getXMag ( ) . getValue ( ) * 2 ;
2011-03-25 09:52:36 +00:00
break ;
case CAM_PERSP :
default :
2012-06-12 22:05:33 +00:00
{
double x = camera - > getXFov ( ) . getValue ( ) ;
// x is in degrees, cam->lens is in millimiters
cam - > lens = fov_to_focallength ( DEG2RADF ( x ) , cam - > sensor_x ) ;
}
break ;
2010-09-28 08:01:20 +00:00
}
2011-03-25 09:52:36 +00:00
}
break ;
2012-06-12 22:05:33 +00:00
case COLLADAFW : : Camera : : SINGLE_Y :
2011-03-25 09:52:36 +00:00
{
2012-04-28 06:31:57 +00:00
switch ( cam - > type ) {
2011-03-25 09:52:36 +00:00
case CAM_ORTHO :
cam - > ortho_scale = ( float ) camera - > getYMag ( ) . getValue ( ) ;
break ;
case CAM_PERSP :
default :
2012-06-12 22:05:33 +00:00
{
2011-03-25 09:52:36 +00:00
double yfov = camera - > getYFov ( ) . getValue ( ) ;
// yfov is in degrees, cam->lens is in millimiters
2011-11-04 14:36:06 +00:00
cam - > lens = fov_to_focallength ( DEG2RADF ( yfov ) , cam - > sensor_x ) ;
2012-06-12 22:05:33 +00:00
}
break ;
2010-09-28 08:01:20 +00:00
}
}
2011-03-25 09:52:36 +00:00
break ;
2012-06-12 22:05:33 +00:00
case COLLADAFW : : Camera : : UNDEFINED :
// read nothing, use blender defaults.
break ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
}
2011-03-25 09:52:36 +00:00
this - > uid_camera_map [ camera - > getUniqueId ( ) ] = cam ;
2011-07-06 18:09:36 +00:00
this - > FW_object_map [ camera - > getUniqueId ( ) ] = camera ;
2011-03-25 09:52:36 +00:00
// XXX import camera options
return true ;
}
/** When this method is called, the writer must write the image.
2012-06-12 22:05:33 +00:00
* \ return The writer should return true , if writing succeeded , false otherwise . */
bool DocumentImporter : : writeImage ( const COLLADAFW : : Image * image )
2011-03-25 09:52:36 +00:00
{
2012-06-12 22:05:33 +00:00
if ( mImportStage ! = General )
2011-03-25 09:52:36 +00:00
return true ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2013-02-13 16:00:46 +00:00
const std : : string & imagepath = image - > getImageURI ( ) . toNativePath ( ) ;
2011-03-25 09:52:36 +00:00
char dir [ FILE_MAX ] ;
2013-02-13 16:00:46 +00:00
char absolute_path [ FILE_MAX ] ;
const char * workpath ;
BLI_split_dir_part ( this - > import_settings - > filepath , dir , sizeof ( dir ) ) ;
BLI_join_dirfile ( absolute_path , sizeof ( absolute_path ) , dir , imagepath . c_str ( ) ) ;
if ( BLI_exists ( absolute_path ) ) {
workpath = absolute_path ;
}
else {
// Maybe imagepath was already absolute ?
if ( ! BLI_exists ( imagepath . c_str ( ) ) ) {
fprintf ( stderr , " Image not found: %s. \n " , imagepath . c_str ( ) ) ;
return true ;
}
workpath = imagepath . c_str ( ) ;
}
Image * ima = BKE_image_load_exists ( workpath ) ;
2011-03-25 09:52:36 +00:00
if ( ! ima ) {
2013-02-13 16:00:46 +00:00
fprintf ( stderr , " Cannot create image: %s \n " , workpath ) ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
return true ;
}
2011-03-25 09:52:36 +00:00
this - > uid_image_map [ image - > getUniqueId ( ) ] = ima ;
return true ;
}
/** When this method is called, the writer must write the light.
2012-06-12 22:05:33 +00:00
* \ return The writer should return true , if writing succeeded , false otherwise . */
bool DocumentImporter : : writeLight ( const COLLADAFW : : Light * light )
2011-03-25 09:52:36 +00:00
{
2012-06-12 22:05:33 +00:00
if ( mImportStage ! = General )
2011-03-25 09:52:36 +00:00
return true ;
2011-03-30 10:51:01 +00:00
2011-03-25 09:52:36 +00:00
Lamp * lamp = NULL ;
std : : string la_id , la_name ;
2011-03-30 10:51:01 +00:00
2013-01-21 13:45:49 +00:00
ExtraTags * et = getExtraTags ( light - > getUniqueId ( ) ) ;
/*TagsMap::iterator etit;
2011-03-28 09:31:44 +00:00
ExtraTags * et = 0 ;
etit = uid_tags_map . find ( light - > getUniqueId ( ) . toAscii ( ) ) ;
2012-03-24 07:52:14 +00:00
if ( etit ! = uid_tags_map . end ( ) )
2013-01-21 13:45:49 +00:00
et = etit - > second ; */
2011-03-30 10:51:01 +00:00
2011-03-25 09:52:36 +00:00
la_id = light - > getOriginalId ( ) ;
la_name = light - > getName ( ) ;
2013-02-05 13:04:01 +00:00
if ( la_name . size ( ) ) lamp = ( Lamp * ) BKE_lamp_add ( G . main , ( char * ) la_name . c_str ( ) ) ;
else lamp = ( Lamp * ) BKE_lamp_add ( G . main , ( char * ) la_id . c_str ( ) ) ;
2011-03-30 10:51:01 +00:00
2011-03-25 09:52:36 +00:00
if ( ! lamp ) {
2012-03-31 00:59:17 +00:00
fprintf ( stderr , " Cannot create lamp. \n " ) ;
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
return true ;
}
2011-03-30 10:51:01 +00:00
// if we find an ExtraTags for this, use that instead.
2012-03-24 07:52:14 +00:00
if ( et & & et - > isProfile ( " blender " ) ) {
2011-03-28 09:31:44 +00:00
et - > setData ( " type " , & ( lamp - > type ) ) ;
et - > setData ( " flag " , & ( lamp - > flag ) ) ;
et - > setData ( " mode " , & ( lamp - > mode ) ) ;
et - > setData ( " gamma " , & ( lamp - > k ) ) ;
2011-03-30 10:51:01 +00:00
et - > setData ( " red " , & ( lamp - > r ) ) ;
et - > setData ( " green " , & ( lamp - > g ) ) ;
et - > setData ( " blue " , & ( lamp - > b ) ) ;
2011-03-28 09:31:44 +00:00
et - > setData ( " shadow_r " , & ( lamp - > shdwr ) ) ;
et - > setData ( " shadow_g " , & ( lamp - > shdwg ) ) ;
et - > setData ( " shadow_b " , & ( lamp - > shdwb ) ) ;
et - > setData ( " energy " , & ( lamp - > energy ) ) ;
et - > setData ( " dist " , & ( lamp - > dist ) ) ;
et - > setData ( " spotsize " , & ( lamp - > spotsize ) ) ;
et - > setData ( " spotblend " , & ( lamp - > spotblend ) ) ;
et - > setData ( " halo_intensity " , & ( lamp - > haint ) ) ;
et - > setData ( " att1 " , & ( lamp - > att1 ) ) ;
et - > setData ( " att2 " , & ( lamp - > att2 ) ) ;
et - > setData ( " falloff_type " , & ( lamp - > falloff_type ) ) ;
et - > setData ( " clipsta " , & ( lamp - > clipsta ) ) ;
et - > setData ( " clipend " , & ( lamp - > clipend ) ) ;
et - > setData ( " shadspotsize " , & ( lamp - > shadspotsize ) ) ;
et - > setData ( " bias " , & ( lamp - > bias ) ) ;
et - > setData ( " soft " , & ( lamp - > soft ) ) ;
et - > setData ( " compressthresh " , & ( lamp - > compressthresh ) ) ;
et - > setData ( " bufsize " , & ( lamp - > bufsize ) ) ;
et - > setData ( " samp " , & ( lamp - > samp ) ) ;
et - > setData ( " buffers " , & ( lamp - > buffers ) ) ;
et - > setData ( " filtertype " , & ( lamp - > filtertype ) ) ;
et - > setData ( " bufflag " , & ( lamp - > bufflag ) ) ;
et - > setData ( " buftype " , & ( lamp - > buftype ) ) ;
et - > setData ( " ray_samp " , & ( lamp - > ray_samp ) ) ;
et - > setData ( " ray_sampy " , & ( lamp - > ray_sampy ) ) ;
et - > setData ( " ray_sampz " , & ( lamp - > ray_sampz ) ) ;
et - > setData ( " ray_samp_type " , & ( lamp - > ray_samp_type ) ) ;
et - > setData ( " area_shape " , & ( lamp - > area_shape ) ) ;
et - > setData ( " area_size " , & ( lamp - > area_size ) ) ;
et - > setData ( " area_sizey " , & ( lamp - > area_sizey ) ) ;
et - > setData ( " area_sizez " , & ( lamp - > area_sizez ) ) ;
et - > setData ( " adapt_thresh " , & ( lamp - > adapt_thresh ) ) ;
et - > setData ( " ray_samp_method " , & ( lamp - > ray_samp_method ) ) ;
et - > setData ( " shadhalostep " , & ( lamp - > shadhalostep ) ) ;
et - > setData ( " sun_effect_type " , & ( lamp - > shadhalostep ) ) ;
et - > setData ( " skyblendtype " , & ( lamp - > skyblendtype ) ) ;
et - > setData ( " horizon_brightness " , & ( lamp - > horizon_brightness ) ) ;
et - > setData ( " spread " , & ( lamp - > spread ) ) ;
et - > setData ( " sun_brightness " , & ( lamp - > sun_brightness ) ) ;
et - > setData ( " sun_size " , & ( lamp - > sun_size ) ) ;
et - > setData ( " backscattered_light " , & ( lamp - > backscattered_light ) ) ;
et - > setData ( " sun_intensity " , & ( lamp - > sun_intensity ) ) ;
et - > setData ( " atm_turbidity " , & ( lamp - > atm_turbidity ) ) ;
et - > setData ( " atm_extinction_factor " , & ( lamp - > atm_extinction_factor ) ) ;
et - > setData ( " atm_distance_factor " , & ( lamp - > atm_distance_factor ) ) ;
et - > setData ( " skyblendfac " , & ( lamp - > skyblendfac ) ) ;
et - > setData ( " sky_exposure " , & ( lamp - > sky_exposure ) ) ;
et - > setData ( " sky_colorspace " , & ( lamp - > sky_colorspace ) ) ;
}
2011-03-30 10:51:01 +00:00
else {
float constatt = light - > getConstantAttenuation ( ) . getValue ( ) ;
float linatt = light - > getLinearAttenuation ( ) . getValue ( ) ;
float quadatt = light - > getQuadraticAttenuation ( ) . getValue ( ) ;
float d = 25.0f ;
float att1 = 0.0f ;
float att2 = 0.0f ;
float e = 1.0f ;
if ( light - > getColor ( ) . isValid ( ) ) {
COLLADAFW : : Color col = light - > getColor ( ) ;
lamp - > r = col . getRed ( ) ;
lamp - > g = col . getGreen ( ) ;
lamp - > b = col . getBlue ( ) ;
}
2012-03-24 07:52:14 +00:00
if ( IS_EQ ( linatt , 0.0f ) & & quadatt > 0.0f ) {
2011-03-30 10:51:01 +00:00
att2 = quadatt ;
2012-06-12 22:05:33 +00:00
d = sqrt ( 1.0f / quadatt ) ;
2011-03-30 10:51:01 +00:00
}
// linear light
2012-03-24 07:52:14 +00:00
else if ( IS_EQ ( quadatt , 0.0f ) & & linatt > 0.0f ) {
2011-03-30 10:51:01 +00:00
att1 = linatt ;
2012-06-12 22:05:33 +00:00
d = ( 1.0f / linatt ) ;
2012-03-24 06:38:07 +00:00
}
else if ( IS_EQ ( constatt , 1.0f ) ) {
2011-03-30 10:51:01 +00:00
att1 = 1.0f ;
2012-03-24 06:38:07 +00:00
}
else {
2011-03-30 10:51:01 +00:00
// assuming point light (const att = 1.0);
att1 = 1.0f ;
}
2011-03-25 09:52:36 +00:00
2012-06-12 22:05:33 +00:00
d * = ( 1.0f / unit_converter . getLinearMeter ( ) ) ;
2011-03-30 10:51:01 +00:00
lamp - > energy = e ;
lamp - > dist = d ;
COLLADAFW : : Light : : LightType type = light - > getLightType ( ) ;
2012-04-28 06:31:57 +00:00
switch ( type ) {
2011-03-30 10:51:01 +00:00
case COLLADAFW : : Light : : AMBIENT_LIGHT :
2012-06-12 22:05:33 +00:00
{
lamp - > type = LA_HEMI ;
}
break ;
2011-03-30 10:51:01 +00:00
case COLLADAFW : : Light : : SPOT_LIGHT :
2012-06-12 22:05:33 +00:00
{
lamp - > type = LA_SPOT ;
lamp - > att1 = att1 ;
lamp - > att2 = att2 ;
if ( IS_EQ ( att1 , 0.0f ) & & att2 > 0 )
lamp - > falloff_type = LA_FALLOFF_INVSQUARE ;
if ( IS_EQ ( att2 , 0.0f ) & & att1 > 0 )
lamp - > falloff_type = LA_FALLOFF_INVLINEAR ;
lamp - > spotsize = light - > getFallOffAngle ( ) . getValue ( ) ;
lamp - > spotblend = light - > getFallOffExponent ( ) . getValue ( ) ;
}
break ;
2011-03-30 10:51:01 +00:00
case COLLADAFW : : Light : : DIRECTIONAL_LIGHT :
2012-06-12 22:05:33 +00:00
{
/* our sun is very strong, so pick a smaller energy level */
lamp - > type = LA_SUN ;
lamp - > mode | = LA_NO_SPEC ;
}
break ;
2011-03-30 10:51:01 +00:00
case COLLADAFW : : Light : : POINT_LIGHT :
2012-06-12 22:05:33 +00:00
{
lamp - > type = LA_LOCAL ;
lamp - > att1 = att1 ;
lamp - > att2 = att2 ;
if ( IS_EQ ( att1 , 0.0f ) & & att2 > 0 )
lamp - > falloff_type = LA_FALLOFF_INVSQUARE ;
if ( IS_EQ ( att2 , 0.0f ) & & att1 > 0 )
lamp - > falloff_type = LA_FALLOFF_INVLINEAR ;
}
break ;
2011-03-30 10:51:01 +00:00
case COLLADAFW : : Light : : UNDEFINED :
2012-06-12 22:05:33 +00:00
{
fprintf ( stderr , " Current lamp type is not supported. \n " ) ;
lamp - > type = LA_LOCAL ;
}
break ;
2011-03-30 10:51:01 +00:00
}
}
2011-03-25 09:52:36 +00:00
this - > uid_lamp_map [ light - > getUniqueId ( ) ] = lamp ;
2011-07-03 11:07:34 +00:00
this - > FW_object_map [ light - > getUniqueId ( ) ] = light ;
2011-03-25 09:52:36 +00:00
return true ;
}
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2011-03-25 09:52:36 +00:00
// this function is called only for animations that pass COLLADAFW::validate
2012-06-12 22:05:33 +00:00
bool DocumentImporter : : writeAnimation ( const COLLADAFW : : Animation * anim )
2011-03-25 09:52:36 +00:00
{
2012-06-12 22:05:33 +00:00
if ( mImportStage ! = General )
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
return true ;
2011-03-25 09:52:36 +00:00
// return true;
return anim_importer . write_animation ( anim ) ;
}
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2011-03-25 09:52:36 +00:00
// called on post-process stage after writeVisualScenes
2012-06-12 22:05:33 +00:00
bool DocumentImporter : : writeAnimationList ( const COLLADAFW : : AnimationList * animationList )
2011-03-25 09:52:36 +00:00
{
2012-06-12 22:05:33 +00:00
if ( mImportStage ! = General )
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
return true ;
2011-03-25 09:52:36 +00:00
// return true;
return anim_importer . write_animation_list ( animationList ) ;
}
/** When this method is called, the writer must write the skin controller data.
2012-06-12 22:05:33 +00:00
* \ return The writer should return true , if writing succeeded , false otherwise . */
bool DocumentImporter : : writeSkinControllerData ( const COLLADAFW : : SkinControllerData * skin )
2011-03-25 09:52:36 +00:00
{
return armature_importer . write_skin_controller_data ( skin ) ;
}
// this is called on postprocess, before writeVisualScenes
2012-06-12 22:05:33 +00:00
bool DocumentImporter : : writeController ( const COLLADAFW : : Controller * controller )
2011-03-25 09:52:36 +00:00
{
2012-06-12 22:05:33 +00:00
if ( mImportStage ! = General )
2011-03-25 09:52:36 +00:00
return true ;
return armature_importer . write_controller ( controller ) ;
}
2012-06-12 22:05:33 +00:00
bool DocumentImporter : : writeFormulas ( const COLLADAFW : : Formulas * formulas )
2011-03-25 09:52:36 +00:00
{
return true ;
}
Merge of the COLLADA GSoC branch into trunk.
COLLADA code is disabled by default (it has dependencies requiring manual install).
SCons and CMake builds are supported on Windows and Linux, no Mac building yet. More on building COLLADA code: http://wiki.blender.org/index.php/User:Kazanbas/Building_Collada_Branch.
The detailed command log of the merge (can be useful for educational purposes):
branch=https://svn.blender.org/svnroot/bf-blender/branches/soc-2009-chingachgook
# collada code
svn copy $branch/source/blender/collada source/blender/collada
# operator
svn merge -c 20401,20955,21077,24077,24079 $branch/source/blender/windowmanager/intern/wm_operators.c source/blender/windowmanager/intern/wm_operators.c
# menu
svn merge -c 24079 $branch/release/scripts/ui/space_info.py release/scripts/ui/space_info.py
# scons
svn merge -c 20398 $branch/source/blender/SConscript source/blender/SConscript
svn merge -c 20398,20691,20955,22726 $branch/tools/btools.py tools/btools.py
svn merge -c 20691,20955,22726 $branch/tools/Blender.py tools/Blender.py
svn merge -c 20398,20692,20955 $branch/config/linux2-config.py config/linux2-config.py
svn merge -c 22726 $branch/config/win64-vc-config.py config/win64-vc-config.py
svn merge -c 22726 $branch/config/win32-vc-config.py config/win32-vc-config.py
svn merge -c 24077 $branch/source/blender/windowmanager/SConscript source/blender/windowmanager/SConscript
# cmake
svn merge -c 23319,23905,24077,24158 $branch/CMakeLists.txt CMakeLists.txt
svn merge -c 23319 $branch/source/blender/CMakeLists.txt source/blender/CMakeLists.txt
svn merge -c 23319 $branch/source/creator/CMakeLists.txt source/creator/CMakeLists.txt
svn merge -c 23319 $branch/CMake/macros.cmake CMake/macros.cmake
svn merge -c 24077 $branch/source/blender/windowmanager/CMakeLists.txt source/blender/windowmanager/CMakeLists.txt
2009-10-30 15:35:50 +00:00
2012-06-12 22:05:33 +00:00
bool DocumentImporter : : writeKinematicsScene ( const COLLADAFW : : KinematicsScene * kinematicsScene )
2011-03-25 09:52:36 +00:00
{
return true ;
}
2010-12-14 21:46:03 +00:00
2012-06-12 22:05:33 +00:00
ExtraTags * DocumentImporter : : getExtraTags ( const COLLADAFW : : UniqueId & uid )
2011-03-25 11:07:57 +00:00
{
2012-06-12 22:05:33 +00:00
if ( uid_tags_map . find ( uid . toAscii ( ) ) = = uid_tags_map . end ( ) ) {
2011-03-25 11:07:57 +00:00
return NULL ;
}
2011-03-28 09:31:44 +00:00
return uid_tags_map [ uid . toAscii ( ) ] ;
2011-03-25 11:07:57 +00:00
}
2012-06-12 22:05:33 +00:00
bool DocumentImporter : : addExtraTags ( const COLLADAFW : : UniqueId & uid , ExtraTags * extra_tags )
2011-03-25 09:52:36 +00:00
{
2011-03-28 09:31:44 +00:00
uid_tags_map [ uid . toAscii ( ) ] = extra_tags ;
2011-03-25 09:52:36 +00:00
return true ;
}
2010-12-14 21:46:03 +00:00
2013-02-10 17:06:05 +00:00
bool DocumentImporter : : is_armature ( COLLADAFW : : Node * node )
{
2013-01-21 13:45:49 +00:00
COLLADAFW : : NodePointerArray & child_nodes = node - > getChildNodes ( ) ;
2013-02-10 17:06:05 +00:00
for ( unsigned int i = 0 ; i < child_nodes . getCount ( ) ; i + + ) {
if ( child_nodes [ i ] - > getType ( ) = = COLLADAFW : : Node : : JOINT ) {
return true ;
}
else {
continue ;
}
2013-01-21 13:45:49 +00:00
}
2013-02-04 00:18:09 +00:00
2013-01-21 13:45:49 +00:00
//no child is JOINT
return false ;
}