Go
New
Find
Notify
Tools
Reply
  
5-star Rating (1 Vote) Rate It!  Login/Join 
Member
Posted
Yo
I posted a script for destroying an object, but it was lost when the forum was changed, I think. Anyway I've rewritten to work on a selection of faces, and I think I've seen it called jitter in other applications - it moves pointsi in an object a little randomly to make them look imperfect.

So here's the new script. Still don't know how to post code so if you want it check word wraps etc. the pikky is of a merino before and after the fleece is jittered, in this case by a max of 0.005 of the object size

Language = VBScript

'*********************************************************************************
' Purpose: move all point in a face selection by a random amount
' Script by George Jenner, January 2004
'*********************************************************************************
Option Explicit 'require variable declarations
Sub Main (CanvasApp)

Dim Scene
Dim ActiveObjectCount
Dim ActiveFaceCount
Dim Object
Dim PointCount
Dim ii 'for looping
Dim jj
Dim BoxMinX 'The Object's Bounding Box
Dim BoxMinY 'The Object's Bounding Box
Dim BoxMinZ 'The Object's Bounding Box
Dim BoxMaxX 'The Object's Bounding Box
Dim BoxMaxY 'The Object's Bounding Box
Dim BoxMaxZ 'The Object's Bounding Box
Dim XSize
Dim YSize
Dim ZSize
Dim XDelta
Dim YDelta
Dim ZDelta
Dim PX
Dim PY
Dim PZ
Dim Points() ' and array to see if a point has already been moved
Dim Face 'Face we are working on
Dim ObjectPoint 'number of point in the object
Dim FacePoints 'numbe of points in a face
Randomize
'get the scene
Set Scene = CanvasApp.GetActiveScene
'get the active object count
ActiveObjectCount = Scene.GetActiveObjectCount
ActiveFaceCount=Scene.GetActiveFaceCount
' msgBox("Points " & ActiveFaceCount)
'only proceed if there is an active object
If ActiveFaceCount <1 Then
MsgBox "Please select at least one face."
Else
'get the active object (right now there can only be one)
Set Object = Scene.GetActiveObject(0)
'get the object's dimensions
Object.GetBoundingBox BoxMinX, BoxMinY, BoxMinZ, BoxMaxX, BoxMaxY, BoxMaxZ
XSize = BoxMaxX-BoxMinX
YSize = BoxMaxY-BoxMinY
ZSize = BoxMaxZ-BoxMinZ
XDelta = InputBox("Max to move X? I want a proportion of it's size: "& XSize,,".01")
YDelta = InputBox("Max to move Y? I want a proportion of it's size: "& YSize,,".01")
ZDelta = InputBox("Max to move Z? I want a proportion of it's size: "& ZSize,,".01")
'so Maximum Perturbations are +/-
XDelta=XDelta*XSize
YDelta=YDelta*YSize
ZDelta=ZDelta*ZSize
PointCount = Object.GetPointCount
Redim Points (PointCount) 'this will be set to 1 if the point is moved
for ii=0 to PointCount-1
Points(ii)=0
next
for ii=0 to ActiveFaceCount-1
set Face=Scene.GetActiveFace(ii)
FacePoints=Face.GetPointCount
Randomize
For jj= 0 to FacePoints-1
ObjectPoint=Face.GetPoint (jj)
if Points(ObjectPoint)=0 then 'then it hasn't yet been moved
Object.GetPoint ObjectPoint, PX,PY,PZ
Object.SetPoint ObjectPoint, PX+XDelta-(2*Rnd*XDelta),PY+YDelta-(2*Rnd*YDelta),PZ+ZDelta-(2*Rnd*ZDelta)
Points(ObjectPoint)=1
end if
next
next
end if
'finally write a Script operation layer to save the change
Object.GenerateNormals 3.1415926/3
Object.WriteScriptOperationLayer

End Sub

----------------------end script----------------

Imagesmoothandwoolly.jpg (40 Kb, 238 downloads)
 
Posts: 190 | Registered: Fri November 07 2003Reply With QuoteEdit or Delete MessageReport This Post
Member
Picture of korben
Posted Hide Post
i like this - it seems to add more detail to an object with little or no work
 
Posts: 297 | Location: oregon, USA | Registered: Thu January 01 2004Reply With QuoteEdit or Delete MessageReport This Post
Member
Posted Hide Post
Yep, ecxatly what I have been looking for! Smile

"Eat me! See if I care."
 
Posts: 118 | Location: Finland | Registered: Fri November 07 2003Reply With QuoteEdit or Delete MessageReport This Post
Junior Member
Picture of Bobirov
Posted Hide Post
Can also be used to make a decent terrain effect too.. Smile
 
Posts: 66 | Location: FL, USA | Registered: Mon December 29 2003Reply With QuoteEdit or Delete MessageReport This Post
Member
Picture of polybuilder
Posted Hide Post
This is great, thanks Geo_jenner! Smile
 
Posts: 334 | Registered: Fri November 07 2003Reply With QuoteEdit or Delete MessageReport This Post
Member
Posted Hide Post
no worries. It would be easy to make into an operation if anyone was so inclined. I think.

George
 
Posts: 190 | Registered: Fri November 07 2003Reply With QuoteEdit or Delete MessageReport This Post
 Previous Topic | Next Topic powered by eve community  
 


© Amabilis Software 2003-2007