2015-08-04 1 views
0

Привет, я работаю над скриптом, я создавал случайные экземпляры поликубов на сетке майя. Однако я не знаю, как остановить эти кубики, размножающиеся поверх каждого или внутри друг друга. Я слышал, что в Интернете было брошено окно с ограничениями, но я не уверен, как его создать. Может кто-нибудь помочь мне, я работал над этим в течение нескольких дней. (Im кодирование в Python)Как остановить поли объекты, нерестующие друг в друга при рандомизации их местоположения MAYA

ответ

1

Если вы сохраняете местоположение каждого куба в качестве кортежа(), вы можете сохранить его в наборе. Тогда просто проверить набор каждый раз, когда вы выбросили кости на новое место до и перебрасывать, если эта комбинация уже используется:

import random 
already_seen = set() 
created = [] 
while len(created) < 11: 
    x = random.randint(-10, 10) 
    y = random.randint(-10,10) 
    z = random.randint(-10,10) 
    pos = (x, y, z) 
    if pos not in already_seen: 
     already_seen.add(pos) 
     node, shape = cmds.polyCube() 
     cmds.xform(node, t = pos) 
     created.append(node) 

Это использует целые позиции, потому что получает вас от крючка для проверки расстояния каждого новый пункт против всех предыдущих. Вы можете рассматривать целые позиции как «ячейку» и добавлять меньшие случайные смещения внутри этой ячейки, чтобы они были менее жесткими, если это имеет значение.