Forum

Author Topic: Ближайшее расстояние от камеры до твердотельной модели  (Read 1819 times)

aldanstar

  • Full Member
  • ***
  • Posts: 127
    • View Profile
    • Александр Старовойтов
Здравствуйте, Алексей
Возникла небольшая дилемма:
Как найти ближайшее расстояние от камеры (конечно будет от каждой камеры) до твердотельной модели через API?
Заранее спасибо
С уважением,
Александр Старовойтов
Казанский (Приволжский) Федеральный Университет

Alexey Pasumansky

  • Agisoft Technical Support
  • Hero Member
  • *****
  • Posts: 13210
    • View Profile
Здравствуйте, Александр,

Можно попробовать воспользоваться функцией model.pickPoint() которая находит точку пересечения луча с мешем.

Пример скрипта ниже, находит наименьшее расстояние до модели для точек с исходного изображения, соответствующего камере. Для ускорения работы, скрипт просматривает не каждый пиксель, а бежит с шагом в 50 точек.

Code: [Select]
chunk = PhotoScan.app.document.chunk
model = chunk.model
camera = chunk.cameras[0]
dist = 1E10
for x in range(0, camera.sensor.width, 100):
    for y in range(0, camera.sensor.height, 100):
        point =  PhotoScan.Vector([x, y])
        point3D = model.pickPoint(camera.center, camera.transform.mulp(camera.sensor.calibration.unproject(point)))
        if point3D:
            dist = min(dist, (camera.center - point3D).norm())
print(dist * chunk.transform.scale)
Best regards,
Alexey Pasumansky,
Agisoft LLC