Render.ru

Python scripting

Andots

Знаток
Рейтинг
66
#21
Про распараллеливание ещё вспомнил. Через OpenMP делай в cpp.
От спасибки есть такой <omp.h> Вообще еще подумывал через Cuda что то попробовать замутить ,если получится подключить, и как нить использовать по возможности MPxGPUDeformer.h , всетаки в итоге у меня деформер должен быть. Ну пока рано, учусь еще.
 

Lemieux

Знаток
Рейтинг
58
#22
Изначально считаем не каждый вертекс а каждый сотый (ну или 1000, не суть) к примеру и находим расстояние до каждого сотого ветекса второго объекта, как только расстояние уменьшается до определенного значения включаем в расчет остальные вертексы вокруг того который приблизился.
А с ч его ты взял, что сотый вертекс одного объекта будет лежать на минимальном растоянии от сотого вертекса другого? :) Может быть к сотому вертексу первого объекта ближе не сотый, а сто первый вертекс? :)
 

Andots

Знаток
Рейтинг
66
#23
А с ч его ты взял, что сотый вертекс одного объекта будет лежать на минимальном растоянии от сотого вертекса другого? :) Может быть к сотому вертексу первого объекта ближе не сотый, а сто первый вертекс? :)
А разве я так сказал, что ближайший будет именно сотый а не стопервый? Этим мы просто на пару порядков сокращаем число ненужных итераций и находим зону максимального сближения, и уже потом в этой зоне начинаем считать каждый вертекс.
 

Lemieux

Знаток
Рейтинг
58
#25
Есть вот такая простая функция:
Код:
def number(i):
    num_i=[i]
    return num_i

Как сделать так, чтобы после вот таких действий:
Код:
number(0)

print(num_0)

она работала, а не писала
Код:
# Error: name 'num_0' is not defined
# Traceback (most recent call last):
#   File "<maya console>", line 1, in <module>
# NameError: name 'num_0' is not defined #
Можно решить с помощью форматирования строк и eval, но вдруг кто знает решение изящней.
 

Cyberika

Активный участник
Рейтинг
16
#26
Если ты хочеш, что бы питон распечатал то, что функция возвращает то так:
Код:
def number(i):
    num_i=[i]
    return num_i
print number(0)
 

Lemieux

Знаток
Рейтинг
58
#27
Почему такая штука не работает, окно не удаляется, а всегда создаётся новое.
Код:
import pymel.core as pm

def lxWindow():
    try:
        win.delete()
        win = pm.window()
    except:
         win = pm.window()
    win.show()
lxWindow()
А вот такая работает
Код:
import pymel.core as pm

try:
    win.delete()
    win = pm.window()
except:
    win = pm.window()
win.show()
 

Александр Иванов

Активный участник
Рейтинг
7
#28
Почему такая штука не работает, окно не удаляется, а всегда создаётся новое.
Код:
import pymel.core as pm

def lxWindow():
    try:
        win.delete()
        win = pm.window()
    except:
         win = pm.window()
    win.show()
lxWindow()
А вот такая работает
Код:
import pymel.core as pm

try:
    win.delete()
    win = pm.window()
except:
    win = pm.window()
win.show()
С пространством имён косяк, думаю. Посмотри имя окошка, которое хочешь удалить, и имя окошка, которое реально пытаешься удалить. По идее запуская скрипт повторно, ты заново инициализируешь функцию. И у неё нет доступа к переменным, которые были инициализированы в первом вызове. Правильнее давать готовое окошко, как аргумент функции. Которая уже проверит есть такое окошко, или нет, и сделает всё, что нужно.
 
Последнее редактирование:

Lemieux

Знаток
Рейтинг
58
#29
Хитрый финт ушами, подавать неизвестно что, даже не экземпляр класса, в аргумент функции.

Код:
import pymel.core as pm

def lxWindow(win):
    try:
        win.delete()
        win = pm.window()
    except:
         win = pm.window()
    win.show()

lxWindow(win)
 
Сверху