branches/2-44-stable

Merge from trunk:

	revision 11339 (BugFix #6946)
	revision 11340 (BugFix #6875)
	revision 11343 (Rendering bugfix)
This commit is contained in:
Diego Borghetti 2007-07-23 03:53:33 +00:00
parent 0631dfc3ef
commit e47675696b
3 changed files with 35 additions and 28 deletions

View File

@ -9,7 +9,7 @@ Tooltip: 'Export the UV face layout of the selected object to a .TGA or .SVG fil
__author__ = "Martin 'theeth' Poirier"
__url__ = ("http://www.blender.org", "http://blenderartists.org/")
__version__ = "2.4"
__version__ = "2.5"
__bpydoc__ = """\
This script exports the UV face layout of the selected mesh object to
@ -96,6 +96,11 @@ Notes:<br>See change logs in scripts for a list of contributors.
# Version 2.4
# Port from NMesh to Mesh by Daniel Salazar (zanqdo)
# --------------------------
# Version 2.5
# Fixed some old off by one rasterizing errors (didn't render points at 1.0 in the UV scale properly).
# Fixed wire drawing for non 1 wire size (didn't wrap or stretch properly
# and would often raise exceptions)
# --------------------------
FullPython = False
@ -322,7 +327,7 @@ def UV_Export_TGA(vList, size, wsize, wrap, file):
step = 0
img = Buffer(size+1,size+1)
img = Buffer(size,size)
if wrap:
wrapSize = size
@ -333,15 +338,16 @@ def UV_Export_TGA(vList, size, wsize, wrap, file):
for f in vList:
for v in f:
x = int(v[0] * size)
maxx = max (x, maxx)
minx = min (x, minx)
maxx = max (x + wsize - 1, maxx)
minx = min (x - wsize + 1, minx)
y = int(v[1] * size)
maxy = max (y, maxy)
miny = min (y, miny)
maxy = max (y + wsize - 1, maxy)
miny = min (y - wsize + 1, miny)
wrapSize = max (maxx - minx + 1, maxy - miny + 1)
scale = float (size) / float (wrapSize)
max_index = size - 1 # max index of the buffer (height or width)
fnum = 0
fcnt = len (vList)
@ -361,31 +367,31 @@ def UV_Export_TGA(vList, size, wsize, wrap, file):
if step:
try:
for t in xrange(step):
x = int(floor((co1[0] + t*(co2[0]-co1[0])/step) * size))
y = int(floor((co1[1] + t*(co2[1]-co1[1])/step) * size))
x = int(floor((co1[0] + t*(co2[0]-co1[0])/step) * max_index))
y = int(floor((co1[1] + t*(co2[1]-co1[1])/step) * max_index))
if wrap:
x = x % wrapSize
y = y % wrapSize
else:
x = int ((x - minx) * scale)
y = int ((y - miny) * scale)
co = x * 1 + y * 1 * size;
img[co] = 0
if wsize > 1:
for x in range(-1*wsize + 1,wsize):
for y in range(-1*wsize,wsize):
img[co + 1 * x + y * 1 * size] = 0
for dx in range(-1*wsize + 1, wsize):
if wrap:
wx = (x + dx) % wrapSize
else:
wx = int ((x - minx + dx) * scale)
for dy in range(-1*wsize + 1, wsize):
if wrap:
wy = (y + dy) % wrapSize
else:
wy = int ((y - miny + dy) * scale)
co = wx * 1 + wy * 1 * size
img[co] = 0
except OverflowError:
if not extreme_warning:
print "Skipping extremely long UV edges, check your layout for excentric values"
extreme_warning = True
for v in f:
x = int(v[0] * size)
y = int(v[1] * size)
x = int(v[0] * max_index)
y = int(v[1] * max_index)
if wrap:
x = x % wrapSize

View File

@ -1235,7 +1235,7 @@ static void shade_one_light(LampRen *lar, ShadeInput *shi, ShadeResult *shr, int
/* shadow and spec, (visifac==0 outside spot) */
if(visifac> 0.0f) {
if(i>0.0f && (R.r.mode & R_SHADOW)) {
if((R.r.mode & R_SHADOW)) {
if(ma->mode & MA_SHADOW) {
if(lar->shb || (lar->mode & LA_SHAD_RAY)) {
@ -1259,7 +1259,7 @@ static void shade_one_light(LampRen *lar, ShadeInput *shi, ShadeResult *shr, int
}
}
/* in case 'no diffuse' we still do most calculus, spec can be in shadow */
/* in case 'no diffuse' we still do most calculus, spec can be in shadow.*/
if(!(lar->mode & LA_NO_DIFF)) {
if(i>0.0f) {
if(ma->mode & MA_SHADOW_TRA)

View File

@ -1506,7 +1506,7 @@ static void ElementResize(TransInfo *t, TransData *td, float mat[3][3]) {
if (td->ext) {
float fsize[3];
if (t->flag & (T_OBJECT|T_TEXTURE)) {
if (t->flag & (T_OBJECT|T_TEXTURE|T_POSE)) {
float obsizemat[3][3];
// Reorient the size mat to fit the oriented object.
Mat3MulMat3(obsizemat, tmat, td->axismtx);
@ -1520,7 +1520,7 @@ static void ElementResize(TransInfo *t, TransData *td, float mat[3][3]) {
protectedSizeBits(td->protectflag, fsize);
if ((t->flag & T_V3D_ALIGN)==0) { // align mode doesn't rotate objects itself
if ((t->flag & T_V3D_ALIGN)==0) { // align mode doesn't resize objects itself
/* handle ipokeys? */
if(td->tdi) {
TransDataIpokey *tdi= td->tdi;
@ -1726,6 +1726,7 @@ int ToSphere(TransInfo *t, short mval[2])
VecAddf(td->loc, t->center, vec);
}
recalcData(t);