Re: Help with Expression
| Date : Tue, 14 Mar 2006 01:03:07 +0100 |
| To : XSI(at)Softimage.COM |
| From : Kai Wolter <xsi(at)kaipirinha.com> |
| Subject : Re: Help with Expression |
but i liked the task, so here are a few helper functions:
// align books in x with a specified distance
function AlignObjectsX(objects, distance)
{
for (i=0; i<objects.Count-1; i++)
{
//xmin, ymin, zmin, xmax, ymax, zmax col1 = GetBBox (objects(i) , false, null, null, null, null, null, null );
col2 = GetBBox (objects(i+1) , false, null, null, null, null, null, null );
objects(i+1).Kinematics.Global.Parameters( "posx" ).Value = col1(3) + (col2(3) - col2(0))/2 + distance;
}
}
// align books in y
function AlignToObjectY(objects, object)
{
col = GetBBox (object, false, null, null, null, null, null, null );
for (i=0; i<objects.Count; i++)
{
col2 = GetBBox (objects(i) , false, null, null, null, null, null, null );
objects(i).Kinematics.Global.Parameters( "posy" ).Value = objects(i).Kinematics.Global.Parameters( "posy" ).Value + object.Kinematics.Global.Parameters( "posy" ).Value - (col2(1) - col(1));
}
}
// sample scene
CreatePrim("Cube", "MeshSurface", null, null);
Scale(null, 9.47775628626693E-02, 1, 1, siRelative, siLocal, siObj, siXYZ, null, null, null, null, null, null, null, 0);
Scale(null, 1, 1, 0.720870034294196, siRelative, siLocal, siObj, siXYZ, null, null, null, null, null, null, null, 0);
Duplicate("cube", null, siDuplicateHistory, siSharedParent, siShareGrouping, siDuplicateProperties, siDuplicateAnimation, siShareConstraints, siSetSelection, siApplyRepeatXForm, null, null, null, null, null, null, null, null, null, null, siDuplicateSelectedTextureSupports);
Scale(null, 2.08001760680689, 1, 1, siRelative, siLocal, siObj, siXYZ, null, null, null, null, null, null, null, 0);
Duplicate("cube1", null, siDuplicateHistory, siSharedParent, siShareGrouping, siDuplicateProperties, siDuplicateAnimation, siShareConstraints, siSetSelection, siApplyRepeatXForm, null, null, null, null, null, null, null, null, null, null, siDuplicateSelectedTextureSupports);
Scale(null, 0.709690205494565, 1, 1, siRelative, siLocal, siObj, siXYZ, null, null, null, null, null, null, null, 0);
Scale(null, 1, 1.11605415860735, 1, siRelative, siLocal, siObj, siXYZ, null, null, null, null, null, null, null, 0);
DeleteObj("cube2");
SelectObj("cube,cube1", null, true);
SelectObj("cube1", null, true);
Duplicate("cube1", null, siDuplicateHistory, siSharedParent, siShareGrouping, siDuplicateProperties, siDuplicateAnimation, siShareConstraints, siSetSelection, siApplyRepeatXForm, null, null, null, null, null, null, null, null, null, null, siDuplicateSelectedTextureSupports);
Scale(null, 1.49986352670082, 1, 1, siRelative, siLocal, siObj, siXYZ, null, null, null, null, null, null, null, 0);
SelectObj("cube1", null, true);
Scale(null, 1, 2.29980657640232, 1, siRelative, siLocal, siObj, siXYZ, null, null, null, null, null, null, null, 0);
SelectObj("cube2", null, true);
Scale(null, 1, 0.686653771760155, 1, siRelative, siLocal, siObj, siXYZ, null, null, null, null, null, null, null, 0);
DeselectAll();
SelectObj("cube", null, null);
ToggleSelection("cube1", null, null);
ToggleSelection("cube2", null, null);
AlignObjectsX(Selection, 1.5); AlignToObjectY(Selection, Selection(0));
Cheers, Kai
Christian Götzinger schrieb:
Hi List,
I also posted this on XSIBase but seeing as this mailing list is probably the best place to get answers to technical questions, here goes:
I'm in the process of creating several bookshelves filled with books.
I have created one book which I'm going to duplicate off many times. Basically, I've parented that one book to a null and I'm using the null to scale the book up and down. This way I can lateron randomize the sizes of all my books very easily.
Now, what I'd like to do is for XSI to align my books automatically next to each other.
Here's my basic setup:
BookP1 (Null) -> Scale X = 5 -- Scale Y = 25 -- Scale Z = 15 Child: Book1 (which is the actual book)
To test things out I have duplicated the hierarchy to create BookP2 and its child Book2
I have set this expression on BookP2's local position X:
Valid expression : BookP2.kine.local.posx = BookP1.kine.local.posx+BookP1.kine.local.sclx
This works very well. If I scale BookP1 up in X, the second book gets aligned automatically.
Now my question: how can I generalize this expression so that it'll be valid for all books once I've mass duplicated them?
I'm not into scripting or anything, so this may seem like a piece of cake to you
Thanks, Chris
--- Unsubscribe? Mail Majordomo(at)Softimage.COM with the following text in body: unsubscribe xsi
- Follow-Ups:
- Re: Help with Expression
- From: Christian Götzinger <cg(at)pension-goetzinger.de>
- Re: Help with Expression
- References:
- Help with Expression
- From: Christian Götzinger <cg(at)pension-goetzinger.de>
- Help with Expression
| DATE: | << | >> | THREAD: | << | >> | INDEX: | Main | Thread |
|---|
- Previous by Date: RE: BatchServe?
- Next by Date: RE: BatchServe?
- Previous by Thread: RE: BatchServe?
- Next by Thread: RE: BatchServe?
- Index(es):
| Search the XSI List archives here or use the advanced search form to search across mailing lists. Searching help is available. |