Я работаю над кодом Blender C ++ для дипломной работы.
Когда я применяю обводку к объекту в системе скульптинга, мне нужно сохранять информацию о кистях и их расположении.
Для этого я сохраняю в файл все данные типа Brush, определенные в blender / madedna / DNA_brush_types.h, за исключением следующих значений:
ID id;
struct BrushClone clone;
struct CurveMapping *curve; /* falloff curve */
struct MTex mtex;
struct MTex mask_mtex;
struct Brush *toggle_brush;
struct ImBuf *icon_imbuf;
PreviewImage *preview;
char icon_filepath[1024]; /* 1024 = FILE_MAX */
Я сохраняю их в функцию sculpt_stroke_done из /blender/editors/sculpt_paint/sculpt.c
,
Для его местоположения я сохраняю координаты мыши в sculpt_stroke_test_start
того же исходного файла.
Затем, в новом экземпляре Blender, я хочу перезагрузить эту информацию, чтобы применить к объекту тот же штрих, и я хочу, чтобы это происходило так же, когда щелкали повсюду в трехмерном виде (не только щелкая мышью по объекту). Я делаю эту информацию о загрузке файла в /blender/editors/sculpt_paint/paint_stroke.c
(paint_stroke_new method
).
Я делаю тесты в начальном контексте Blender (встраивание куба в начальную сцену Blender) и с помощью штрихов, определяемых одним кликом (самая простая кисть, я думаю).
На данный момент результат таков: когда я пытаюсь повторно применить ту же кисть, я получаю трансформацию куба (я имею в виду масштаб или перевод). В любом случае, кажется, что она применима и к кисти, но деформация скульптинга отличается от сохраненной кисти.
Мой профессор предложил мне найти другие параметры, которые я должен сохранить, но что?
Кто-нибудь может мне помочь?
Задача ещё не решена.