Как манипулировать частями рамы очков (мост, храмы, линзы) как единые геометрические единицы в блендере через Python APIIOS

Программируем под IOS
Ответить
Anonymous
 Как манипулировать частями рамы очков (мост, храмы, линзы) как единые геометрические единицы в блендере через Python API

Сообщение Anonymous »

Я разрабатываю приложение для iOS, которое общается с сервером Blender, чтобы обеспечить манипулирование 3D-эйерными кадрами в реальном времени. В настоящее время я могу манипулировать только отдельными вершинами, но мне нужно манипулировать целыми частями рамки (мост, храмы, линзы, носовые подушки) как сплоченные геометрические единицы. < /P>
Проблема текущей: < /strong> < /p>
  • Мои текущие подходы модифицируют индивидуальные версии, основанные на позициях < />
    li>










    Неестественные деформации и не поддерживают структурную целостность частей рамки
  • Пользователи ожидают, что части рамки будут масштабировать/перемещать/деформировать как единые объекты

Чего я хочу достичь:
  • mridge geometry
  • Lens manipulation: Resize and reshape lens openings while preserving circular/oval forms
  • Temple manipulation: Adjust length and thickness while maintaining temple curve and taper
  • Nose pad manipulation: Move and resize nose pads as complete units
Текущий подход (плохо работает): < /p>
`# This manipulates individual vertices - not ideal
def adjust_bridge_width(self, scale_factor):
bridge_vertices = self.get_vertices_in_range(1965, 2000)
for vert_idx in bridge_vertices:
vert = self.frame_object.data.vertices[vert_idx]
vert.co.x *= scale_factor # This distorts the geometry`
< /code>
Какой лучший подход для манипулирования частями кадра в качестве единых геометрических единиц в блендере? < /p>
Должен ли я использовать: < /p>

Группы вертекс с пропорциональным редактированием? /> Арматура /костная система для деформации управления? < /li>
Ключи формы для предопределенных деформаций? Circularity)? /> Необходимо поддерживать корректировки в реальном времени с помощью http-запросов < /li>
Целевой вывод обновляется STL-файлы для 3D-печати < /li>
< /ul>
конкретные случаи использования: < /strong> < /p>

.`# What I want to achieve:
manipulator.adjust_bridge_width(1.2) # 20% wider bridge
manipulator.adjust_lens_size(0.9) # 10% smaller lenses
manipulator.adjust_temple_length(1.1) # 10% longer temples
manipulator.adjust_nose_pad_spacing(1.15) # 15% wider nose pad spacing`
< /code>
Любое руководство по правильным методам блендера для этого типа манипуляции с параметрическими кадрами будет высоко оценено!
Дополнительная информация: < /strong> < /p>

Совместная кадр содержит ~ 3000 Vertices < /li>
Необходимо поддерживать печатные геометрии (NO ~ 3000 Vertices < /li>
для обслуживания печатных геометрий (NO ~ 3000 Vertices < /li>
для обслуживания печатных геометрий (NO ~ 3000 Vertices < /li>
/> Производительность важна для настройки в реальном времени < /li>
< /ul>
Я попробовал несколько подходов к манипулированию частями рамы очков в виде единичных геометрических единиц, но все они привели к неестественным искажениям на уровне вершины, а не на правильных деталях.`def adjust_bridge_width(self, scale_factor):
# Find bridge vertices by position
bridge_vertices = []
for i, vert in enumerate(self.frame.data.vertices):
if -0.5
Ожидаемое: мост должен равномерно масштабироваться при сохранении ее естественной кривой и структурной целостности. < /p>
Результат: отдельные вершины перемещались независимо, создавая зазубренные искажения и нарушая геометрию плавного моста. < /p>
Подход 2: Объединенное преобразование с расчетами о смещении < /p>

Подход 2: Объединенное преобразование с расчетами о смещении`def adjustFramePartVertices(self, part, adjustment_type, scale_factor):
# Find all vertices belonging to frame part
part_vertices = self.detect_part_vertices(part)
center = self.calculate_center(part_vertices)

# Apply unified transformation
for vertex_index in part_vertices:
current_pos = self.get_vertex_position(vertex_index)
new_position = self.calculate_new_position(current_pos, center, part, scale_factor)
offset = new_position - current_pos
self.adjust_vertex(vertex_index, offset)`
< /code>
Ожидаемое: части кадра будут трансформироваться как единые единицы (мост плавно расширяется, линзы изменяют размер, храмы естественным образом расширяются). < /p>
Результат: все еще получает манипуляцию на уровне вершины, где отдельные точки движутся независимо. Мост становится неровным, формы линзы становятся полигональными, а не гладкими, а храмы развиваются изгибы.`# Using predefined vertex ranges for frame parts
bridge_range = range(1965, 2001) # 36 vertices
left_lens_range = range(0, 501) # 501 vertices
right_lens_range = range(501, 1000) # 499 vertices

for i in bridge_range:
vertex = self.frame.data.vertices
# Apply transformation relative to part center
vertex.co *= scale_matrix`
< /code>
Ожидаемое: использование диапазонов вершины обеспечит, чтобы все вершины моста перемещались вместе как единое целое. Мост теряет свой плавный переход к областям линз. Мне нужен мост, чтобы сохранить свою кривизну при масштабировании, линзы, чтобы сохранить их круговую/овальную форму при изменении размера, и храмы для плавного расширения при удлинении. Части рамы должны вести себя так, как будто они изготовлены из гибкого материала, который поддерживает характеристики своей формы при корректировке.

Подробнее здесь: https://stackoverflow.com/questions/796 ... ified-geom
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»