LINUX.ORG.RU
ФорумGames

Генератор космических кораблей для blender

 , , , ,


4

1

Наткнулся на удобную штуку - пригодится для прототипирования или даже создания своей евы в сети с куртизантками и чёрными дырами =)

Может кому пригодится - https://github.com/a1studmuffin/SpaceshipGenerator

Или можно генерировать через скрипты что удобно если надо по быстрому сделать сразу например 15 кораблей. Хотел нагенерировать сразу 100 но ужрало всю память, жёстко писало на диск и было убито системой, система плакала от боли =)

import bpy

#количество кораблей
num_spaceship = 15
#количество кораблей в линии
num_in_line   = 5

#смещене по линии и столбцам
x_offset = 10
y_offset = 5

#основной скрипт
counter = num_in_line
current_x = 0
current_y = 0

scene = bpy.context.scene
for num in range(num_spaceship):
    bpy.ops.mesh.generate_spaceship()
    obj = scene.objects.active
    
    counter-=1
    current_y+=y_offset
    if counter == 0:
        counter = num_in_line
        current_x+=x_offset
        current_y = 0
    
    obj.location.x = current_x
    obj.location.y = current_y

В результате получаем нечто такое - https://i.imgur.com/eyE5wAp.png

Экспортируем и летим грабить караваны - https://imgur.com/a/oXF59DH

Вот такой маленький обзорчик.

P.S. Меши иногда кривые отсечение граней происходит с лицевой стороны (при экспорте в obj у меня так) Текстурные координаты кривые. Но чисто для баловства и допила под себя прикольная штучка.

Ответ на: комментарий от RedEyedMan666

Сейчас глянул там ещё с опциями можно играть и тегировать корабли для их повторяемости. Вот так https://imgur.com/a/7UPxqgI например выглядит корабль под именем «linuxorgru» и что важно можно повторить генерацию у себя точ в точ. Удобно. =)

import bpy

#количество кораблей
num_spaceship = 1
#количество кораблей в линии
num_in_line   = 5


#смещене по линии и столбцам
x_offset = 10
y_offset = 5

#основной скрипт
counter = num_in_line
current_x = 0
current_y = 0

scene = bpy.context.scene
for num in range(num_spaceship):
    bpy.ops.mesh.generate_spaceship(random_seed="linuxorgru",
                                    num_hull_segments_min=15,
                                    num_hull_segments_max=30,
                                    create_asymmetry_segments=True,
                                    num_asymmetry_segments_min=30,
                                    num_asymmetry_segments_max=60,
                                    create_face_detail=True,
                                    allow_horizontal_symmetry=True,
                                    allow_vertical_symmetry=True,
                                    apply_bevel_modifier=False,
                                    assign_materials=False)
    obj = scene.objects.active
    
    counter-=1
    current_y+=y_offset
    if counter == 0:
        counter = num_in_line
        current_x+=x_offset
        current_y = 0
    
    obj.location.x = current_x
    obj.location.y = current_y

Прикольная короче чтука

LINUX-ORG-RU ★★ ()

Наткнулся на удобную штуку - пригодится для прототипирования или даже создания своей евы в сети с куртизантками и их чёрными дырами =)

Сходу фикс.

anonymous ()
Ответ на: комментарий от Nervous

Ващето между ботами даже чемпионаты проходят, которые комментируют люди https://youtu.be/d3H3qepOQes?t=131 https://youtu.be/orYIk8D1rs4?t=32 https://www.youtube.com/watch?v=JW2SaXFyF28

LINUX-ORG-RU ★★ ()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)
Ответ на: комментарий от eR

там такое визуальное програмирование, что вообще не понятно где тыкать. Я вон начал изучать визуальные шейдеры. Так и не понял как они работают. Найти бы уроки хорошие для нубов.

OpenMind ★★★ ()
Ответ на: комментарий от LINUX-ORG-RU

я уже думал там реально появился генератор) Смотрю и думаю: ого как качественно генерирует. По картинке makehuman: на моего соседа похож) и … разве он не превратился в плагин для blender? Там старая версия же, не?

OpenMind ★★★ ()
Ответ на: комментарий от OpenMind

На деле проще написать шейдер на glsl чем тянуть мышкой связи.

Например сделать движение по оси x например для движения воды на одной текстуре в разные стороны


vec2 moves = texture2D(texture_move,fTexcoord).xy;
vec4 color = texture2D(texture_diffuse,(fTexcoord + (moves * speed)) );
gl_FaragColor = color;

Всё! В графическом же виде получается нечто вроде этого https://wolthera.info/wp-content/uploads/2019/07/godot_5_flow_distortion.gif

Хотяяя, в особых случаях всё это делать на нодах есть смысл, ибо сама нода может скрывать некоторые кишки что делает визуально понятно логику в хитрых случаях.

Всё от ситуации зависит. Но как минимум на нодах наверное удобно прототипировать или эксперементировать.

LINUX-ORG-RU ★★ ()
Ответ на: комментарий от OpenMind

Ну генераторы есть только в основном проприетарь и всё такое прочее https://youtu.be/9Hazb4e0V94 и в них нет души. Подсознательно прям чувствуешь повторяющиеся эвристики. Вроде обезьяна, ребёнок и большедгудая тян, а кажется будто их одна и та же слониха с рогами родила.

LINUX-ORG-RU ★★ ()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от OpenMind

Гугл,чтение чужого кода и практические эксперименты =)

Ну и если ты про годот https://docs.godotengine.org/ru/latest/tutorials/shading/visual_shaders.html

Если ты про glsl в частности https://habr.com/ru/post/313380/ ахунг 3,3+ opengl

Хотя слушать меня это такое себе, я так любитель просто не более

LINUX-ORG-RU ★★ ()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)
Ответ на: комментарий от LINUX-ORG-RU

по Godot конечно. А я по шейдерам вообще ZERO. Я думал просто кроме официальной документации есть что, а то там 150 уроков надо пройти, что-бы понять куда двигаться.

OpenMind ★★★ ()