[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15305] branches/soc-2008-unclezeiv: svn merge -r 15269:15303 https://svn.blender.org/svnroot/bf-blender/trunk/ blender
Davide Vercelli
davide.vercelli at gmail.com
Sun Jun 22 04:09:05 CEST 2008
Revision: 15305
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15305
Author: unclezeiv
Date: 2008-06-22 04:08:46 +0200 (Sun, 22 Jun 2008)
Log Message:
-----------
svn merge -r 15269:15303 https://svn.blender.org/svnroot/bf-blender/trunk/blender
Modified Paths:
--------------
branches/soc-2008-unclezeiv/release/scripts/vrml97_export.py
branches/soc-2008-unclezeiv/source/blender/python/api2_2x/Mathutils.c
branches/soc-2008-unclezeiv/source/blender/src/buttons_logic.c
branches/soc-2008-unclezeiv/source/blender/src/transform_generics.c
branches/soc-2008-unclezeiv/source/blender/src/transform_snap.c
branches/soc-2008-unclezeiv/source/gameengine/Converter/BL_ShapeDeformer.cpp
branches/soc-2008-unclezeiv/source/gameengine/Converter/BL_SkinDeformer.cpp
branches/soc-2008-unclezeiv/source/gameengine/Ketsji/KX_GameObject.cpp
branches/soc-2008-unclezeiv/source/gameengine/PyDoc/KX_GameObject.py
Modified: branches/soc-2008-unclezeiv/release/scripts/vrml97_export.py
===================================================================
--- branches/soc-2008-unclezeiv/release/scripts/vrml97_export.py 2008-06-22 01:56:11 UTC (rev 15304)
+++ branches/soc-2008-unclezeiv/release/scripts/vrml97_export.py 2008-06-22 02:08:46 UTC (rev 15305)
@@ -3,9 +3,6 @@
Name: 'VRML97 (.wrl)...'
Blender: 241
Group: 'Export'
-Submenu: 'All Objects...' all
-Submenu: 'All Objects compressed...' comp
-Submenu: 'Selected Objects...' selected
Tooltip: 'Export to VRML97 file (.wrl)'
"""
@@ -55,7 +52,7 @@
import Blender
from Blender import Object, Mesh, Lamp, Draw, BGL, \
- Image, Text, sys, Mathutils
+ Image, Text, sys, Mathutils, Registry
from Blender.Scene import Render
import math
@@ -70,8 +67,9 @@
filename = Blender.Get('filename')
_safeOverwrite = True
extension = ''
-ARG=''
+# Matrices below are used only when export_rotate_z_to_y.val:
+#
# Blender is Z up, VRML is Y up, both are right hand coordinate
# systems, so to go from Blender coords to VRML coords we rotate
# by 90 degrees around the X axis. In matrix notation, we have a
@@ -456,6 +454,8 @@
if mat:
if (mat.mode & Blender.Material.Modes['VCOL_PAINT']):
self.vcolors = 1
+ else:
+ self.vcolors = 0
# check if object is wireframe only
if ob.drawType == Blender.Object.DrawTypes.WIRE:
@@ -633,8 +633,9 @@
meshVertexList = me.verts
for vertex in meshVertexList:
- blenvert = Mathutils.Vector(vertex.co)
- vrmlvert = M_blen2vrml * blenvert
+ vrmlvert = blenvert = Mathutils.Vector(vertex.co)
+ if export_rotate_z_to_y.val:
+ vrmlvert = M_blen2vrml * vrmlvert
self.writeUnindented("%s %s %s\n " % \
(vrmlvert[0], \
vrmlvert[1], \
@@ -730,8 +731,8 @@
round(uv[1], self.tp))
j=j+1
indexStr += "-1"
- texIndexList.append(indexStr)
- texCoordList.append(coordStr)
+ texIndexList.append(indexStr)
+ texCoordList.append(coordStr)
self.writeIndented("texCoord TextureCoordinate {\n", 1)
self.writeIndented("point [\n", 1)
@@ -1016,7 +1017,10 @@
return
ob_matrix = Mathutils.Matrix(ob.getMatrix('worldspace'))
- matrix = M_blen2vrml * ob_matrix * M_vrml2blen
+ if export_rotate_z_to_y.val:
+ matrix = M_blen2vrml * ob_matrix * M_vrml2blen
+ else:
+ matrix = ob_matrix
e = matrix.rotationPart().toEuler()
v = matrix.translationPart()
@@ -1089,7 +1093,7 @@
self.writeFog()
self.proto = 0
allObj = []
- if ARG == 'selected':
+ if export_selection_only.val:
allObj = list(scene.objects.context)
else:
allObj = list(scene.objects)
@@ -1098,7 +1102,7 @@
for thisObj in allObj:
self.writeObject(thisObj)
- if ARG != 'selected':
+ if not export_selection_only.val:
self.writeScript()
self.cleanup()
@@ -1213,26 +1217,54 @@
wrlexport=VRML2Export(filename)
wrlexport.export(scene, world, worldmat)
+#########################################################
+# UI and Registry utilities
+#########################################################
+export_selection_only = Draw.Create(0)
+export_rotate_z_to_y = Draw.Create(1)
+export_compressed = Draw.Create(0)
+
+def save_to_registry():
+ d = {}
+ d['selection_only'] = export_selection_only.val
+ d['rotate_z_to_y'] = export_rotate_z_to_y.val
+ d['compressed'] = export_compressed.val
+ Registry.SetKey('vrml97_export', d, True)
+
+def load_from_registry():
+ d = Registry.GetKey('vrml97_export', True)
+ if d:
+ try:
+ export_selection_only.val = d['selection_only']
+ export_rotate_z_to_y.val = d['rotate_z_to_y']
+ export_compressed.val = d['compressed']
+ except: save_to_registry() # If data is not valid, rewrite it.
+
+def show_popup():
+ pup_block = [
+ ('Selection Only', export_selection_only, 'Only export objects in visible selection. Else export whole scene.'),
+ ('Rotate +Z to +Y', export_rotate_z_to_y, 'Rotate such that +Z axis (Blender up) becomes +Y (VRML up).'),
+ ('Compress', export_compressed, 'Generate a .wrz file (normal VRML compressed by gzip).')
+ ]
+ return Draw.PupBlock('Export VRML 97...', pup_block)
+
#########################################################
# main routine
#########################################################
-try:
- ARG = __script__['arg'] # user selected argument
-except:
- print "older version"
+load_from_registry()
-if Blender.Get('version') < 235:
- print "Warning: VRML97 export failed, wrong blender version!"
- print " You aren't running blender version 2.35 or greater"
- print " download a newer version from http://blender3d.org/"
-else:
- if ARG == 'comp':
+# Note that show_popup must be done before Blender.Window.FileSelector,
+# because export_compressed affects the suggested extension of resulting
+# file.
+
+if show_popup():
+ save_to_registry()
+ if export_compressed.val:
extension=".wrz"
from gzip import *
else:
extension=".wrl"
Blender.Window.FileSelector(select_file, "Export VRML97", \
sys.makename(ext=extension))
-
Modified: branches/soc-2008-unclezeiv/source/blender/python/api2_2x/Mathutils.c
===================================================================
--- branches/soc-2008-unclezeiv/source/blender/python/api2_2x/Mathutils.c 2008-06-22 01:56:11 UTC (rev 15304)
+++ branches/soc-2008-unclezeiv/source/blender/python/api2_2x/Mathutils.c 2008-06-22 02:08:46 UTC (rev 15305)
@@ -725,28 +725,33 @@
vec->vec[0] /= norm;
vec->vec[1] /= norm;
vec->vec[2] /= norm;
-
- //create matrix
- cosAngle = (float) cos(angle);
- sinAngle = (float) sin(angle);
- mat[0] = ((vec->vec[0] * vec->vec[0]) * (1 - cosAngle)) +
- cosAngle;
- mat[1] = ((vec->vec[0] * vec->vec[1]) * (1 - cosAngle)) +
- (vec->vec[2] * sinAngle);
- mat[2] = ((vec->vec[0] * vec->vec[2]) * (1 - cosAngle)) -
- (vec->vec[1] * sinAngle);
- mat[3] = ((vec->vec[0] * vec->vec[1]) * (1 - cosAngle)) -
- (vec->vec[2] * sinAngle);
- mat[4] = ((vec->vec[1] * vec->vec[1]) * (1 - cosAngle)) +
- cosAngle;
- mat[5] = ((vec->vec[1] * vec->vec[2]) * (1 - cosAngle)) +
- (vec->vec[0] * sinAngle);
- mat[6] = ((vec->vec[0] * vec->vec[2]) * (1 - cosAngle)) +
- (vec->vec[1] * sinAngle);
- mat[7] = ((vec->vec[1] * vec->vec[2]) * (1 - cosAngle)) -
- (vec->vec[0] * sinAngle);
- mat[8] = ((vec->vec[2] * vec->vec[2]) * (1 - cosAngle)) +
- cosAngle;
+
+ if (isnan(vec->vec[0]) || isnan(vec->vec[1]) || isnan(vec->vec[2])) {
+ /* zero length vector, return an identity matrix, could also return an error */
+ mat[0]= mat[4] = mat[8] = 1.0f;
+ } else {
+ /* create matrix */
+ cosAngle = (float) cos(angle);
+ sinAngle = (float) sin(angle);
+ mat[0] = ((vec->vec[0] * vec->vec[0]) * (1 - cosAngle)) +
+ cosAngle;
+ mat[1] = ((vec->vec[0] * vec->vec[1]) * (1 - cosAngle)) +
+ (vec->vec[2] * sinAngle);
+ mat[2] = ((vec->vec[0] * vec->vec[2]) * (1 - cosAngle)) -
+ (vec->vec[1] * sinAngle);
+ mat[3] = ((vec->vec[0] * vec->vec[1]) * (1 - cosAngle)) -
+ (vec->vec[2] * sinAngle);
+ mat[4] = ((vec->vec[1] * vec->vec[1]) * (1 - cosAngle)) +
+ cosAngle;
+ mat[5] = ((vec->vec[1] * vec->vec[2]) * (1 - cosAngle)) +
+ (vec->vec[0] * sinAngle);
+ mat[6] = ((vec->vec[0] * vec->vec[2]) * (1 - cosAngle)) +
+ (vec->vec[1] * sinAngle);
+ mat[7] = ((vec->vec[1] * vec->vec[2]) * (1 - cosAngle)) -
+ (vec->vec[0] * sinAngle);
+ mat[8] = ((vec->vec[2] * vec->vec[2]) * (1 - cosAngle)) +
+ cosAngle;
+ }
} else {
return EXPP_ReturnPyObjError(PyExc_AttributeError,
"Mathutils.RotationMatrix(): unrecognizable axis of rotation type - expected x,y,z or r\n");
Modified: branches/soc-2008-unclezeiv/source/blender/src/buttons_logic.c
===================================================================
--- branches/soc-2008-unclezeiv/source/blender/src/buttons_logic.c 2008-06-22 01:56:11 UTC (rev 15304)
+++ branches/soc-2008-unclezeiv/source/blender/src/buttons_logic.c 2008-06-22 02:08:46 UTC (rev 15305)
@@ -2149,7 +2149,7 @@
uiDefBut(block, TEX, 1, "To: ",
(xco+10), (yco-(myline++*24)), (width-20), 19,
&ma->toPropName, 0, 31, 0, 0,
- "Optional send message to objects with this name only"
+ "Optional send message to objects with this name only (Prefix name with OB)"
", or empty to broadcast");
#endif
Modified: branches/soc-2008-unclezeiv/source/blender/src/transform_generics.c
===================================================================
--- branches/soc-2008-unclezeiv/source/blender/src/transform_generics.c 2008-06-22 01:56:11 UTC (rev 15304)
+++ branches/soc-2008-unclezeiv/source/blender/src/transform_generics.c 2008-06-22 02:08:46 UTC (rev 15305)
@@ -325,7 +325,7 @@
else {
for (base=G.scene->base.first; base; base=base->next) {
/* recalculate scale of selected nla-strips */
- if (base->object->nlastrips.first) {
+ if (base->object && base->object->nlastrips.first) {
Object *bob= base->object;
bActionStrip *strip;
@@ -398,8 +398,15 @@
}
}
else if(G.sipo->blocktype==ID_OB) {
+ Object *ob= OBACT;
Base *base= FIRSTBASE;
+ /* only if this if active object has this ipo in an action (assumes that current ipo is in action) */
+ if ((ob) && (ob->ipoflag & OB_ACTION_OB) && (G.sipo->pin==0)) {
+ ob->ctime= -1234567.0f;
+ DAG_object_flush_update(G.scene, ob, OB_RECALC_OB);
+ }
+
while(base) {
if(base->object->ipo==G.sipo->ipo) {
do_ob_ipo(base->object);
Modified: branches/soc-2008-unclezeiv/source/blender/src/transform_snap.c
===================================================================
--- branches/soc-2008-unclezeiv/source/blender/src/transform_snap.c 2008-06-22 01:56:11 UTC (rev 15304)
+++ branches/soc-2008-unclezeiv/source/blender/src/transform_snap.c 2008-06-22 02:08:46 UTC (rev 15305)
@@ -902,7 +902,7 @@
if (test == 1) {
MVert *verts = dm->getVertArray(dm);
MFace *faces = dm->getFaceArray(dm);
- int *index_array;
+ int *index_array = NULL;
int index = 0;
int i;
Modified: branches/soc-2008-unclezeiv/source/gameengine/Converter/BL_ShapeDeformer.cpp
===================================================================
--- branches/soc-2008-unclezeiv/source/gameengine/Converter/BL_ShapeDeformer.cpp 2008-06-22 01:56:11 UTC (rev 15304)
+++ branches/soc-2008-unclezeiv/source/gameengine/Converter/BL_ShapeDeformer.cpp 2008-06-22 02:08:46 UTC (rev 15305)
@@ -118,7 +118,9 @@
for (int v =0; v<m_bmesh->totvert; v++)
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list