Имба от китайцев

вышел новый БЕСПЛАТНЫЙ чат-бот сразу с 8 моделями на выбор — для работы есть все нужные фичи, как у ChatGPT
Вот некоторые из них:
• Qwen2.5-Plus — основная модель для работы
• Qwen2.5-Turbo — модель с поддержкой контекста до 1 миллиона токенов для генерации огромных файлов по типу курсовых или даже книг
• Работа с документами — перевод, извлечение данных и т.д.
• Работа с фото/видео — описание, пояснение, расшифровка с тайм-кодами
• Отправка промта сразу ТРЁМ моделям — рабочая зона разделяется на 3 части, где можно оценить ответы каждой модели
• Генерация кода и его компиляция в соседнем окне для проверки на работоспособность
• В будущем добавят ИИ-поиск и генерацию изображений
• Ещё раз это полностью Б-Е-С-П-Л-А-Т-Н-О
Основные модели обходят GPT4o, так что за качество генерации не переживаем.
Имба лежит тут - http://chat.qwenlm.ai/

32 комментария

Спроси у бота о том что произошло на площади тяньаньмэнь в 1989

1

верим?

1

а в чем проблема?

Запрос:


Напишите скрипт на Python для Blender, который выполняет следующие действия:

Выбор кривой : Берет текущую выбранную Bezier кривую в сцене Blender.
Вычисление точек на кривой : Проходит по кривой и создает виртуальные точки через заданный промежуток (продольное разрешение), чтобы получить более детализированное представление пути.
Построение поверхности дороги : Использует вычисленные точки для создания непрерывной поверхности дороги:
Ширина дороги должна быть задаваемой параметром.
Поверхность дороги должна быть построена без учета углов наклона (без banking).
Создание меша : Создает новый объект меша в Blender, представляющий собой поверхность дороги.
Параметры скрипта:

width: Ширина дороги (по умолчанию 4.0 единицы).
resolution: Количество точек вдоль пути (продольное разрешение) (по умолчанию 20).
Пример использования:

Открыть Blender и перейти в режим "Scripting".
Вставить скрипт в текстовый редактор.
Создать или выбрать Bezier кривую в сцене.
Запустить скрипт, нажав кнопку "Run Script".
Ожидаемый результат:

Скрипт должен создать новую поверхность дороги, которая следует за формой выбранной Bezier кривой, с заданной шириной и детализацией.

3 вариант:
Вот пример скрипта на Python для Blender, который выполняет указанные вами действия. Этот скрипт создает поверхность дороги на основе выбранной Bezier кривой с заданной шириной и разрешением.

```python
import bpy
import bmesh
from mathutils import Vector

def create_road_mesh(curve_obj, width=4.0, resolution=20):
# Получаем данные кривой
curve_data = curve_obj.data

# Создаем новый меш для дороги
mesh = bpy.data.meshes.new(name="RoadMesh")
road_obj = bpy.data.objects.new(name="Road", object_data=mesh)

# Добавляем объект в сцену
bpy.context.collection.objects.link(road_obj)

# Создаем список точек на кривой
points = []
for spline in curve_data.splines:
for point in spline.bezier_points:
points.append(curve_obj.matrix_world @ point.co)

# Разбиваем кривую на промежутки
segments = [(points[i], points[i+1]) for i in range(len(points) - 1)]

vertices = []
faces = []

for i in range(len(segments)):
start_point = segments[i][0]
end_point = segments[i][1]

# Вычисляем направляющий вектор
direction = (end_point - start_point).normalized()
normal = Vector((-direction.y, direction.x, 0))

# Создаем точки для ширины дороги
left_start = start_point + normal * width / 2
right_start = start_point - normal * width / 2
left_end = end_point + normal * width / 2
right_end = end_point - normal * width / 2

# Добавляем вершины
vertices.extend([left_start, right_start, left_end, right_end])

if i > 0:
last_face_index = len(vertices) - 5
faces.append((last_face_index, last_face_index + 1, last_face_index + 3, last_face_index + 2))

# Создаем последнюю грань
faces.append((len(vertices) - 4, len(vertices) - 3, len(vertices) - 1, len(vertices) - 2))

# Создаем меш из вершин и граней
mesh.from_pydata(vertices, [], faces)
mesh.update()

def main(width=4.0, resolution=20):
# Проверяем, что выбрана одна кривая
selected_objects = [obj for obj in bpy.context.selected_objects if obj.type == 'CURVE']
if len(selected_objects) != 1:
print("Выберите одну Bezier кривую.")
return

curve_obj = selected_objects[0]
create_road_mesh(curve_obj, width, resolution)

# Запускаем функцию main с параметрами по умолчанию
main()
```

### Как использовать этот скрипт:

1. Откройте Blender и перейдите в режим "Scripting".
2. Вставьте этот скрипт в текстовый редактор.
3. Создайте или выберите Bezier кривую в сцене.
4. Запустите скрипт, нажав кнопку "Run Script".

### Ожидаемый результат:

Скрипт создаст новую поверхность дороги, которая следует за формой выбранной Bezier кривой, с заданной шириной и детализацией.

- **Ширина дороги** задается параметром `width` (по умолчанию 4.0 единицы).
- **Количество точек вдоль пути** задается параметром `resolution` (по умолчанию 20).

Этот скрипт не учитывает углы наклона (banking) и создает плоскую поверхность дороги.

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

```python
import bpy
import math

def create_road_surface(curve, width=4.0, resolution=20):
# Убедимся, что выбрана Bezier кривая
if curve.type != 'CURVE':
print("Выберите Bezier кривую")
return

# Получаем точки кривой
spline = curve.data.splines[0]
points = spline.bezier_points

# Создаем список для хранения точек дороги
road_points = []

# Вычисляем точки на кривой
for i in range(resolution + 1):
t = i / resolution
point = curve.matrix_world @ points[t].co
tangent = points[t].handle_right - points[t].handle_left
normal = tangent.cross(points[t].co).normalized()

# Добавляем точки для левой и правой стороны дороги
left_point = point + normal * (width / 2)
right_point = point - normal * (width / 2)

road_points.append(left_point)
road_points.append(right_point)

# Создаем меш для поверхности дороги
mesh = bpy.data.meshes.new("RoadMesh")
obj = bpy.data.objects.new("Road", mesh)
bpy.context.collection.objects.link(obj)

# Создаем вершины и грани для меша
vertices = []
edges = []
faces = []

for i in range(len(road_points)):
vertices.append((road_points[i][0], road_points[i][1], road_points[i][2]))

# Создаем прямоугольники между точками
for i in range(0, len(vertices) - 2, 2):
faces.append((i, i+1, i+3, i+2))

# Создаем меш
mesh.from_pydata(vertices, edges, faces)
mesh.update()

# Очистка всех объектов
bpy.ops.object.select_all(action='DESELECT')

# Получаем текущую выбранную Bezier кривую
selected_objects = bpy.context.selected_objects
if len(selected_objects) == 0 or selected_objects[0].type != 'CURVE':
print("Выберите Bezier кривую")
else:
curve = selected_objects[0]
create_road_surface(curve, width=4.0, resolution=20)
```

### Как использовать скрипт:

1. Откройте Blender и перейдите в режим "Scripting".
2. Вставьте вышеуказанный скрипт в текстовый редактор Blender.
3. Создайте или выберите Bezier кривую в сцене.
4. Нажмите кнопку "Run Script" для выполнения скрипта.

### Ожидаемый результат:
Скрипт создаст новую поверхность дороги, которая следует за формой выбранной Bezier кривой, с заданной шириной и детализацией. Поверхность дороги будет состоять из прямоугольников, соединенных между собой.

Если вам нужно изменить параметры ширины или количества точек, просто отредактируйте соответствующие значения при вызове функции `create_road_surface`.