Forum

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - e1sep0

Pages: [1]
1
Python and Java API / Re: captureModelView
« on: August 14, 2019, 07:01:12 PM »
Да, все отлично! Спасибо еще раз!

2
Python and Java API / Re: captureModelView
« on: August 14, 2019, 06:46:48 PM »
Это идеальное решение! Спасибо, Алексей!
Но для одной модели вышло так:

3
Python and Java API / Re: captureModelView
« on: August 14, 2019, 12:44:59 PM »
Попробовал повернуть на 30 градусов по оси z, но результат пустой:
Code: [Select]
R = Metashape.Matrix( [[0.87, -0.5, 0], [0.5, 0.87, 0], [0, 0, 1]] ).t()
    T = T.Rotation(R)

4
Python and Java API / Re: captureModelView
« on: August 14, 2019, 11:01:14 AM »
Она у меня получается плоская почему то (https://i.imgur.com/Cr5MxEX.png):
Code: [Select]
bbox_rot =  50.58462719482992  # deg
point = chunk.region.center + Metashape.Vector([0,0, chunk.region.size.z * 2])
SinRotZ = math.sin(math.radians(bbox_rot))
CosRotZ = math.cos(math.radians(bbox_rot))
T = Metashape.Matrix([[CosRotZ, SinRotZ, 0, point.x], [SinRotZ, CosRotZ, 0, point.y], [0, 0.5, -1, point.z], [0, 0, 0, 1]])

Подскажите, какой параметр править для отображения 3D модели как на примере выше. Спасибо

5
Python and Java API / Re: captureModelView
« on: August 13, 2019, 07:05:33 PM »
Спасибо, я пробовал юзать renderImage, но у меня странные результаты получаются, то центр слетает, то поворот сделать не получается.
Подскажите, как правильно повернуть модель с помощью transform, но не очень понял, какие параметры что определяют:

Code: [Select]
point = chunk.region.center + Metashape.Vector([0,0, chunk.region.size.z * 2])
    T = Metashape.Matrix([[1,0,0, point.x], [0,-1,0, point.y], [0,0,-1, point.z], [0,0,0,1]])

    calibration = chunk.sensors[0].calibration
    calibration.f = 5 / 0.006
    calibration.cx = 0
    calibration.cy = 0
    calibration.b1 = 0
    calibration.b2 = 0   
    calibration.k1 = 0
    calibration.k2 = 0
    calibration.k3 = 0
    calibration.k4 = 0
    calibration.p1 = 0
    calibration.p2 = 0
    calibration.width = 4000
    calibration.height = 6000
    calibration.type = Metashape.Sensor.Type.Frame

    render = chunk.model.renderImage(T, calibration)

Получается ровно под прямым углом, а хотелось бы чуть под углом для видимости, что это 3D =) (Например так:
https://i.imgur.com/CfTB6pq.png )
Спасибо

6
Python and Java API / captureModelView
« on: August 13, 2019, 04:04:10 PM »
Добрый день! Пытаюсь через скрипт сохранить модель в виде картинки с помощью
Code: [Select]
# Model Image
    viewpoint = Metashape.app.viewpoint
    cx = viewpoint.width
    cy = viewpoint.height
   
    print(cx)
    print(cy)

    capture = Metashape.app.captureModelView(width = cx, height = cy, transparent = (True), hide_items = (True), source = Metashape.DataSource.ModelData, mode = Metashape.ModelViewMode.ShadedModelView)
    print(capture.height)
    capture.save(main_path + "model_preview.png")

Если выполнять скрипт в приложении, то все работает. А если из консоли, то ошибка:
Quote
RuntimeError: Can't save image: /task_files/fd6faba4-bda8-11e9-8ccc-606dc717741f/model_preview.png
Вот что в capture:
Quote
<Image '0x0x0'>

Пробовал менять и ширину и длину, результата нет. Подскажите, в чем дело?
Спасибо

7
Quote
Расчёт площади с учётом рельефа пока также не поддерживается. Альтернативный вариант - расчёт площади для полигональной модели, т.к. данный метод суммирует площадь всех полигонов модели. Но такой подход требует удаления лишней геометрии.

А что это за геометрия и как ее можно удалить с помощью скрипта?

8
Так а как получить длину из вкладки Профиль средствами Python ?
Вот мой код:
Code: [Select]
if len(coords) >= 2:
    new_shape = chunk.shapes.addShape()
    new_shape.label = "boundary"
    new_shape.type = Metashape.Shape.Polygon
    new_shape.has_z = True
    new_shape.vertices = [Metashape.Vector([coord[1], coord[0]]) for coord in coords]
chunk.shapes.updateAltitudes(new_shape)
print("Периметр фигуры:",new_shape.perimeter2D()," м.")
print("Периметр фигуры с учетом высоты вершин:",new_shape.perimeter3D()," м.")
print("Площадь фигуры:",new_shape.area()," м^2.")
print("Объем фигуры:",new_shape.volume(level = 0)['total']," м^3.")
print("New shape created.")

Вот ответ:
Code: [Select]
2019-07-29 14:34:58 Finished processing in 0.011056 sec (exit code 1)
2019-07-29 14:34:58 Calculating 2D dimensions...
2019-07-29 14:34:58 Периметр фигуры: 312.7722914106116  м.
2019-07-29 14:34:58 Периметр фигуры с учетом высоты вершин: 0.0  м.
2019-07-29 14:34:58 Calculating 2D dimensions...
2019-07-29 14:34:58 Площадь фигуры: 3027.203739898397  м^2.
2019-07-29 14:34:58 Calculating plane...
2019-07-29 14:34:58 Calculating vertex coordinates...
2019-07-29 14:34:58 Calculating volume...
2019-07-29 14:34:58 Finished processing in 0.125381 sec (exit code 1)
2019-07-29 14:34:58 Объем фигуры: 375278.9691737943  м^3.
2019-07-29 14:34:58 New shape created.

Спасибо!

9
Спасибо. По Perimeter3D проблемка: почему то он показывает 0.0.
На картинке это же и есть длина 3D ?

10
А длину и площадь с учетом рельефа нельзя получить?

11
Спасибо огромное! Будем пробовать)

12
Добрый день! Хотел узнать, можно ли с помощью скрипта выполнить следующие расчеты:
– линейная длина отрезка
– линейная длина отрезка с учетом рельефа
– высотная диаграмма по линейному отрезку
– площадь с учетом рельефа
– объем области отмеченной многоугльником
– параметры точки (высота, координаты)

Буду очень благодарен за помощь.

Pages: [1]