Revision: 20096
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20096
Author: campbellbarton
Date: 2009-05-07 16:53:40 +0200 (Thu, 07 May 2009)
Log Message:
-----------
[#18645] Texture painting smudge brush darkens images - 2.49RC1
not fixed but the problem is now less bad when projection painting, bilinear
interpolation was rounding down.
- added gameOb.attrDict to get the internal gameObject dict.
- mesh.getVertex wasnt setting an exception.
Modified Paths:
--------------
trunk/blender/source/blender/imbuf/intern/imageprocess.c
trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp
trunk/blender/source/gameengine/Ketsji/KX_GameObject.h
trunk/blender/source/gameengine/Ketsji/KX_MeshProxy.cpp
trunk/blender/source/gameengine/PyDoc/KX_GameObject.py
Modified: trunk/blender/source/blender/imbuf/intern/imageprocess.c
===================================================================
--- trunk/blender/source/blender/imbuf/intern/imageprocess.c 2009-05-07
09:52:36 UTC (rev 20095)
+++ trunk/blender/source/blender/imbuf/intern/imageprocess.c 2009-05-07
14:53:40 UTC (rev 20096)
@@ -294,10 +294,12 @@
b= v-floor(v);
a_b= a*b; ma_b= (1.0f-a)*b; a_mb= a*(1.0f-b); ma_mb=
(1.0f-a)*(1.0f-b);
- outI[0]= ma_mb*row1I[0] + a_mb*row3I[0] + ma_b*row2I[0]+
a_b*row4I[0];
- outI[1]= ma_mb*row1I[1] + a_mb*row3I[1] + ma_b*row2I[1]+
a_b*row4I[1];
- outI[2]= ma_mb*row1I[2] + a_mb*row3I[2] + ma_b*row2I[2]+
a_b*row4I[2];
- outI[3]= ma_mb*row1I[3] + a_mb*row3I[3] + ma_b*row2I[3]+
a_b*row4I[3];
+ /* need to add 0.5 to avoid rounding down (causes darken with
the smear brush)
+ * tested with white images and this should not wrap back to
zero */
+ outI[0]= (ma_mb*row1I[0] + a_mb*row3I[0] + ma_b*row2I[0]+
a_b*row4I[0]) + 0.5f;
+ outI[1]= (ma_mb*row1I[1] + a_mb*row3I[1] + ma_b*row2I[1]+
a_b*row4I[1]) + 0.5f;
+ outI[2]= (ma_mb*row1I[2] + a_mb*row3I[2] + ma_b*row2I[2]+
a_b*row4I[2]) + 0.5f;
+ outI[3]= (ma_mb*row1I[3] + a_mb*row3I[3] + ma_b*row2I[3]+
a_b*row4I[3]) + 0.5f;
}
}
Modified: trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp 2009-05-07
09:52:36 UTC (rev 20095)
+++ trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp 2009-05-07
14:53:40 UTC (rev 20096)
@@ -1208,6 +1208,7 @@
KX_PYATTRIBUTE_RW_FUNCTION("worldPosition", KX_GameObject,
pyattr_get_worldPosition, pyattr_set_worldPosition),
KX_PYATTRIBUTE_RW_FUNCTION("localScaling", KX_GameObject,
pyattr_get_localScaling, pyattr_set_localScaling),
KX_PYATTRIBUTE_RO_FUNCTION("worldScaling", KX_GameObject,
pyattr_get_worldScaling),
+ KX_PYATTRIBUTE_RO_FUNCTION("attrDict", KX_GameObject,
pyattr_get_attrDict),
/* Experemental, dont rely on these yet */
KX_PYATTRIBUTE_RO_FUNCTION("sensors", KX_GameObject,
pyattr_get_sensors),
@@ -1766,6 +1767,17 @@
return resultlist;
}
+PyObject* KX_GameObject::pyattr_get_attrDict(void *self_v, const
KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+
+ if(self->m_attr_dict==NULL)
+ self->m_attr_dict= PyDict_New();
+
+ Py_INCREF(self->m_attr_dict);
+ return self->m_attr_dict;
+}
+
/* We need these because the macros have a return in them */
PyObject* KX_GameObject::py_getattro__internal(PyObject *attr)
{
Modified: trunk/blender/source/gameengine/Ketsji/KX_GameObject.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_GameObject.h 2009-05-07
09:52:36 UTC (rev 20095)
+++ trunk/blender/source/gameengine/Ketsji/KX_GameObject.h 2009-05-07
14:53:40 UTC (rev 20096)
@@ -895,6 +895,7 @@
static PyObject* pyattr_get_state(void *self_v, const
KX_PYATTRIBUTE_DEF *attrdef);
static int pyattr_set_state(void *self_v, const
KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
static PyObject* pyattr_get_meshes(void* self_v, const
KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_attrDict(void *self_v, const
KX_PYATTRIBUTE_DEF *attrdef);
/* Experemental! */
static PyObject* pyattr_get_sensors(void *self_v, const
KX_PYATTRIBUTE_DEF *attrdef);
Modified: trunk/blender/source/gameengine/Ketsji/KX_MeshProxy.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_MeshProxy.cpp 2009-05-07
09:52:36 UTC (rev 20095)
+++ trunk/blender/source/gameengine/Ketsji/KX_MeshProxy.cpp 2009-05-07
14:53:40 UTC (rev 20096)
@@ -221,24 +221,21 @@
PyObject* KX_MeshProxy::PyGetVertex(PyObject* args, PyObject* kwds)
{
- int vertexindex= 1;
- int matindex= 1;
+ int vertexindex;
+ int matindex;
PyObject* vertexob = NULL;
- if (PyArg_ParseTuple(args,"ii:getVertex",&matindex,&vertexindex))
- {
- RAS_TexVert* vertex =
m_meshobj->GetVertex(matindex,vertexindex);
- if (vertex)
- {
- vertexob = (new KX_VertexProxy(this,
vertex))->NewProxy(true);
- }
- }
- else {
+ if (!PyArg_ParseTuple(args,"ii:getVertex",&matindex,&vertexindex))
return NULL;
+
+ RAS_TexVert* vertex = m_meshobj->GetVertex(matindex,vertexindex);
+
+ if(vertex==NULL) {
+ PyErr_SetString(PyExc_ValueError, "mesh.getVertex(mat_idx,
vert_idx): KX_MeshProxy, could not get a vertex at the given indicies");
+ return NULL;
}
-
- return vertexob;
-
+
+ return (new KX_VertexProxy(this, vertex))->NewProxy(true);
}
PyObject* KX_MeshProxy::PyGetPolygon(PyObject* args, PyObject* kwds)
Modified: trunk/blender/source/gameengine/PyDoc/KX_GameObject.py
===================================================================
--- trunk/blender/source/gameengine/PyDoc/KX_GameObject.py 2009-05-07
09:52:36 UTC (rev 20095)
+++ trunk/blender/source/gameengine/PyDoc/KX_GameObject.py 2009-05-07
14:53:40 UTC (rev 20096)
@@ -79,6 +79,8 @@
- note: This attribute is experemental and may be removed (but
probably wont be).
- note: Changes to this list will not update the KX_GameObject.
@type actuators: list
+ @ivar attrDict: get the objects internal python attribute dictionary
for direct (faster) access.
+ @type attrDict: dict
@group Deprecated: getPosition, setPosition, setWorldPosition,
getOrientation, setOrientation, getState, setState, getParent, getVisible,
getMass, getMesh
"""
def endObject():
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs