Page 2 of 2

Re: Get information from a mesh node?

PostPosted: Tue Jan 21, 2014 8:28 pm
by stratified
If you go via the vertices, it gives you the same dimensions as the original OBJ file... So if you scale it, you have to recalculate the scaling yourself.

Re: Get information from a mesh node?

PostPosted: Tue Jan 21, 2014 11:49 pm
by bepeg4d
ok thomas, thanks for the clarification ;)
ciao beppe

Re: Get information from a mesh node?

PostPosted: Mon Oct 08, 2018 8:12 am
by AndreasBergmann
Hi,
I like this script, thanks!
Do you think it is posssible to get not only position but also rotation of a plane?

Best,
Andreas

Re: Get information from a mesh node?

PostPosted: Thu Dec 08, 2022 3:56 am
by jitendra
Hey Jason,
This script is still working well.
But can you help with converting this to a Scripted Nodegraph?
I want to use the output bounding box values in dynamically positioning other object (e.g. ground floor).
Happy to pay for the task as well.
Thanks.

grimm wrote:Thanks Thomas, that's good to know. Here is my function if anyone is interested, any ideas to make it better will be greatly appreciated.

Code: Select all
-- calculate the statistics of a mesh and return a table of those values
function getMeshStats(verts)
  local meshStats = {}
  local minX = 0
  local maxX = 0
  local minY = 0
  local maxY = 0
  local minZ = 0
  local maxZ = 0
  local lengthX = 0
  local lengthY = 0
  local lengthZ = 0
  local x, y, z

  -- find the bounding box
  for k,v in pairs(verts) do
    x = v[1]
    if x > maxX then maxX = x end
    if x < minX then minX = x end
    y = v[2]
    if y > maxY then maxY = y end
    if y < minY then minY = y end
    z = v[3]
    if z > maxZ then maxZ = z end
    if z < minZ then minZ = z end
  end

  meshStats["min_x"] = minX
  meshStats["max_x"] = maxX
  meshStats["min_y"] = minY
  meshStats["max_y"] = maxY
  meshStats["min_z"] = minZ
  meshStats["max_z"] = maxZ

  -- find the mesh's length for each axis
  lengthX = maxX - minX
  lengthY = maxY - minY
  lengthZ = maxZ - minZ

  meshStats["x_len"] = lengthX
  meshStats["y_len"] = lengthY
  meshStats["z_len"] = lengthZ

  -- find the mesh's position
  local posX = lengthX/2.0 + minX
  local posY = lengthY/2.0 + minY
  local posZ = lengthZ/2.0 + minZ

  meshStats["pos_x"] = posX
  meshStats["pos_y"] = posY
  meshStats["pos_z"] = posZ

  return meshStats
end

selectedMesh = octane.project.getSelection()[1]
verts = selectedMesh:getAttribute(octane.A_VERTICES)
meshStats = getMeshStats(verts)

print "X info"
print(meshStats["pos_x"])
print(meshStats["min_x"])
print(meshStats["max_x"])
print "Y info"
print(meshStats["pos_y"])
print(meshStats["min_y"])
print(meshStats["max_y"])
print "Z info"
print(meshStats["pos_z"])
print(meshStats["min_z"])
print(meshStats["max_z"])


If you do run the script, just make sure to select a mesh node first. Otherwise it will not work. :)

Jason

Re: Get information from a mesh node?

PostPosted: Fri May 05, 2023 4:26 pm
by grimm
jitendra wrote:Hey Jason,
This script is still working well.
But can you help with converting this to a Scripted Nodegraph?
I want to use the output bounding box values in dynamically positioning other object (e.g. ground floor).
Happy to pay for the task as well.
Thanks.


Hi jitendra,

Sorry for not getting back to you sooner, I didn't see your message until today. If you still need my help with converting the function over that is no problem.

Jason