Редактирование файла проекта
Файл проекта Wrap представляет собой простой текстовый файл в формате JSON. Его можно легко прочитать и исправить в любом текстовом редакторе.
Структура файлов проекта
Ниже приведен пример файла проекта, содержащего две ноды Load
и Subdivide
. Сначала он загружает геометрию из файла *.obj, а затем разбивает ее на части. Полный файл проекта можно скачать здесь.
{
"formatVersion": 0,
"nodes": {
"Load": {...},
"Subdivide": {...},
},
"timeline": {
"current": 0,
"max": 10,
"min": 0
}
}
В некоторых случаях может быть полезно иметь возможность найти и изменить параметр ноды внутри файла проекта с помощью текстового редактора или пользовательского скрипта.
Например, мы хотим изменить этот проект так, чтобы он загружал геометрию из другого файла *.obj.
Давайте рассмотрим ноду Load
, который загружает геометрию.
"Load": {
"isAlwaysVisible": true,
"nodeId": 0,
"nodeType": "LoadGeom",
"params": {
"fileNames": {...},
"texture": {...},
"transform": {...},
"visualParam": {...}
}
},
"x": 262,
"y": 242
},
Мы видим, что у ноды есть 4 параметра, один из которых ``fileNames““.
"fileNames": {
"connectedNodeId": -1,
"dataType": "StringList",
"value": [ "C:/Models/Alex.obj" ]
},
Изменить имя файла очень просто. Все, что нам нужно сделать, это изменить строку
"value": [ "C:/Models/Alex.obj" ]
на строку
"value": [ "C:/Models/John.obj" ]
Редактирование файла проекта с помощью Python
Предыдущую операцию можно выполнить с помощью нескольких строк Python скрипта
import json
f = open('Project.wrap','r')
project = json.loads(f.read())
project['nodes']['Load']['params']['fileNames']['value'] = ['C:/Models/John.obj']
f.close()
Чтобы записать отредактированный проект обратно в файл, мы можем сделать следующее
f = open('Project.wrap','w')
f.write(json.dumps(project))
f.close()
Вы также можете использовать Интерфейс командной строки для вычисления отредактированного проекта в Wrap.
Предупреждение
Формат файла проекта не гарантируется в будущем. Вы можете использовать редактирование проекта как временное решение для автоматизации, пока мы не включим поддержку Python скриптов в Wrap.