Hello. I'm making a script which should distribute a group of objects by the polygons of another object. But I'm getting an issue. All the objects in the group are placed at the same point, while I would like them to behave like a single object.
Is there a way to fix it somehow?
-- Event handler for the "Distribute" button click
on distributeButton pressed do
(
local targetObject = getNodeByName(addPlaceOnObjectButton.text)
if targetObject != undefined do
(
local selectedObjects = for objName in objectListBox.items collect getNodeByName(objName)
local numPolygons = polyOp.getNumFaces targetObject
local numObjects = selectedObjects.count
if numPolygons >= numObjects do -- Ensure there are enough polygons
(
for i = 1 to numObjects do
(
local obj = selectedObjects[i]
local polygonIndex = i
if polygonIndex > numPolygons do
polygonIndex = numPolygons -- Avoid index out of range
local polygonCenter = polyOp.getFaceCenter targetObject polygonIndex
local polygonNormal = polyOp.getFaceNormal targetObject polygonIndex
maxOps.cloneNodes obj cloneType:#instance newNodes:&instanceObj -- Create an instance of the object
instanceObj.position = polygonCenter -- Place the instance on the center of the polygon
instanceObj.dir = polygonNormal -- Align instance's local Y-axis with the polygon's normal
)
-- If the number of objects is less than the number of polygons, create additional instances
if numPolygons > numObjects do
(
for j = (numObjects + 1) to numPolygons do
(
local randomIndex = random 1 objectListBox.items.count -- Generate a random index
local randomObjName = objectListBox.items[randomIndex] -- Get a random object name from the list
local randomObj = getNodeByName(randomObjName) -- Get the corresponding object
local polygonCenter = polyOp.getFaceCenter targetObject j
local polygonNormal = polyOp.getFaceNormal targetObject j
maxOps.cloneNodes randomObj cloneType:#instance newNodes:&instanceObj -- Create an instance of the random object
instanceObj.position = polygonCenter -- Place the instance on the center of the polygon
instanceObj.dir = polygonNormal -- Align instance's local Y-axis with the polygon's normal
)
)
)
)
)