Just to show I’m not crazy. Here’s the code from the script your download link point to:
# Crinkle Script - SPECIAL FACE VERSION OF SCRIPT
# by RobertT
# Version: 1.0
# Author E-mail: [email protected]
# Script Release Date: December 11, 2003
# Based on my original Crinkle script at
# http://webusers.warwick.net/~u1019306/myblenderimages/crinklescript.zip
import Blender
from Blender import NMesh, Material
from Blender.Draw import *
from Blender.BGL import *
from Blender import Window
from whrandom import random
print "Now Running: Crinkle Script (FACE VERSION) V1.0 by RobertT ([email protected])"
def crinkle(whichAxis):
check = Blender.Object.GetSelected()
oldCrinkleValue = crinkleIntensity.val
print "OldCrinkle: " , oldCrinkleValue
if (len(check)>0):
for o in Blender.Object.GetSelected():
objName = o.getName()
print "Crinkling " , objName , "by amount of" , crinkleIntensity.val
meshData = NMesh.GetRaw(objName)
s = random()*3
if (s>1 and s<3):
s = -1
for f in meshData.faces:
for i in xrange(3):
if (whichAxis == 1):
f.v[i][0] += s*(random() * crinkleIntensity.val)
if (whichAxis == 2):
f.v[i][1] += s*(random() * crinkleIntensity.val)
if (whichAxis == 3):
f.v[i][2] += s*(random() * crinkleIntensity.val)
if (whichAxis == 4):
f.v[i][0] += s*(random() * crinkleIntensity.val)
f.v[i][1] += s*(random() * crinkleIntensity.val)
f.v[i][2] += s*(random() * crinkleIntensity.val)
meshData.update()
o.makeDisplayList()
Window.RedrawAll()
print "crinkleIntensity: " , crinkleIntensity
crinkleIntensity.val = oldCrinkleValue
else:
print "No object selected."
def draw():
global crinkleIntensity, xButton, yButton, zButton, xyzButton
crinkleIntensity = Create (.05)
glClearColor(.7, .7, 1, 0.0)
glClear(GL_COLOR_BUFFER_BIT)
glRasterPos2i(20,430)
Text("Crinkle Script")
glRasterPos2i(20,410)
Text("by RobertT ([email protected])", "small")
crinkleIntensity = Slider("Crinkle amount: ", 1, 20, 350, 365, 30, crinkleIntensity.val, .05 , 2.0, False)#, True, "Amount to crinkle vertices of selected mesh(es) by");
b = Button("Crinkle along X axis", 2, 20, 320, 180, 25)
b = Button("Crinkle along Y axis", 3, 205, 320, 180, 25)
b = Button("Crinkle along Z axis", 4, 20, 290, 180, 25)
b = Button("Crinkle all XYZ axes", 5, 205, 290, 180, 25)
glRasterPos2i(20,275)
Text("Tips: Experiment 1st on a COPY of an object: actions cannot be undone!", "small")
glRasterPos2i(20,260)
Text("For more tips and important info read the README.TXT file.", "small")
Button("Exit", 6, 205, 220, 180, 25)
def event(evt, val):
if (evt == XKEY or evt == QKEY):
print "Script exited by user."
Exit()
def bevent(evt):
if evt == 11:
return
if evt == 2:
crinkle(1)
if evt == 3:
crinkle(2)
if evt == 4:
crinkle(3)
if evt == 5:
crinkle(4)
if evt == 6:
print "Script exited by user."
Exit()
Register (draw, event, bevent)
It still uses xrange(3) and there’s no reference to the normal.

Martin