return IMPEXP_SUCCESS;
}
1 какой метод отвечает за задание координат света? (координаты находятся в файле который я импортирую)
2 Как теперь отобразить его в сцене?
Savin Denis, я уже написал экспортер на MAX SDK. У меня нет времени, чтобы писать еще на скрипте. Вот до чего я доучился уже.Помоги чем сможеш пожалуйста:
int Importer:😃oImport(const TCHAR *name, ImpInterface *ii, Interface *i, BOOL suppressPrompts) {
tri->mesh.setVert(1, 1.00, 0.00, 1.00); // должен создать только один вертекс
node->Reference(tri);
node->SetName(_T("Serg"😉);
ii->AddNodeToScene(node);
return IMPEXP_SUCCESS;
}
Проблема в том, что он ничего не создаёт и "Макс" тупо валится(((
Зарание спасибо.
Вышло!!!!🙂
Теперь как мне обьеденить ети всето точки?? Потомоу что у меня только вершины импортируются.А я хочу чтобы они между собой были связаны сплайнами
node->Reference(tri);
node->SetName(_T("model"😉);
ii->AddNodeToScene(node);
Теперь у меня в сцене отображаются точки(вершины) в даном случае их только 2. Как мне теперь их соеденить линией?
Как задать точки и соединить как face?
> Но так не выходит(( Падает 3ds Max ((
Что я не так делаю?
Ты задал размер массива faces в один фейс, а а сам фаршируеш целых 3 и к тому-же начинаеш с индекса 1 которорый уже выходит за границы массива.
Для начала те нужны как миниму 3 вертекса, этого тебе достаточно чтобы создать Один face (треугольник), именно границы треугольника автоматически помечаються ребрами (edges)
В фейсе ты должен указать Индексы на 3 точки в массиве точек, а не сами координаты !
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Sergio10
DoImport(const TCHAR *name, ImpInterface *ii, Interface *i, BOOL suppressPrompts) {
GenLight *plight = ii->CreateLightObject(OMNI_LIGHT);
plight->Enable(0);
return IMPEXP_SUCCESS;
}
1 какой метод отвечает за задание координат света? (координаты находятся в файле который я импортирую)
2 Как теперь отобразить его в сцене?
Зарание спасибо.
Savin Denis
DoImport(const TCHAR *name, ImpInterface *impip, Interface *i, BOOL suppressPrompts) { ........ // Init Value TSTR nodeName; Matrix3 nodeTM(1); GenLight* light = NULL; TimeValue time; // Create Class Light Omni light = impip->CreateLightObject(OMNI_LIGHT); // Set Light Settings nodeName = ... // Задать имя nodeTM = ... // Задать матрицу позиции time = (TimeValue)0; // Задать прараметры для кадра: Point3 col = ... // Задать цвет light->SetRGBColor(time, col); light->SetIntensity(time, 1.); // Задать интенсивность light->SetHotspot(time, ...); light->SetFallsize(time, ...); light->SetUseAtten(1); light->SetAtten(time, ATTEN_START, ...); light->SetAtten(time, ATTEN_END, ...); // Set Shadow light->SetShadow(0); // Create Node ImpNode* node = impip->CreateNode(); node->Reference(light); node->SetName(nodeName); impip->AddNodeToScene(node); INode* realINode = node->GetINode(); RecordNode(realINode); // Set Transform & Enable node->SetTransform(0, nodeTM); light->Enable(TRUE); return TRUE;PSСмотри как это делается в примерах например asciiimp.
Sergio10
P.S. если можно то лучше покажите пример как создать примитивный объэкт (например 'plane'😉
Буду весьма благодарен.
Savin Denis
Sergio10
int Importer:😃oImport(const TCHAR *name, ImpInterface *ii, Interface *i, BOOL suppressPrompts) {
ImpNode *node = ii->CreateNode();
TriObject *tri = CreateNewTriObject();
tri->mesh.setVert(1, 1.00, 0.00, 1.00); // должен создать только один вертекс
node->Reference(tri);
node->SetName(_T("Serg"😉);
ii->AddNodeToScene(node);
return IMPEXP_SUCCESS;
}
Проблема в том, что он ничего не создаёт и "Макс" тупо валится(((
Зарание спасибо.
Sergio10
Теперь как мне обьеденить ети всето точки?? Потомоу что у меня только вершины импортируются.А я хочу чтобы они между собой были связаны сплайнами
Savin Denis
Дальше индексируеш треугольники, по три вершины на face.
Sergio10
ImpNode *node = ii->CreateNode();
TriObject *tri = CreateNewTriObject();
int numVert = 2;
tri->mesh.setNumVerts(numVert);
tri->mesh.setVert(1, 0.0, 1.0, 0.0);
tri->mesh.setVert(2, 0.0, 0.0, 0.0);
node->Reference(tri);
node->SetName(_T("model"😉);
ii->AddNodeToScene(node);
Теперь у меня в сцене отображаются точки(вершины) в даном случае их только 2. Как мне теперь их соеденить линией?
Как задать точки и соединить как face?
Sergio10
Но так не выходит(( Падает 3ds Max ((
Что я не так делаю?
Savin Denis
Что я не так делаю?
Ты задал размер массива faces в один фейс, а а сам фаршируеш целых 3 и к тому-же начинаеш с индекса 1 которорый уже выходит за границы массива.
Для начала те нужны как миниму 3 вертекса, этого тебе достаточно чтобы создать Один face (треугольник), именно границы треугольника автоматически помечаються ребрами (edges)
В фейсе ты должен указать Индексы на 3 точки в массиве точек, а не сами координаты !
Sergio10
Всё равно не работает. Выправи пожалуйста меня если есть ошибка.
Зарание спасибо.
Savin Denis
ImpNode *node = ii->CreateNode(); TriObject *tri = CreateNewTriObject(); Mesh *msh = tri->GetMesh(); int numVert = 3; int numFace = 1; msh->setNumVerts(numVert); msh->setNumFaces(numFace); msh->setVert(0, 0.0, 1.0, 0.0); msh->setVert(1, 0.0, 0.0, 0.0); msh->setVert(2, 1.0, 0.0, 0.0); msh->faces[0].setVerts( 0, 1, 2); msh->faces[0].setEdgeVisFlags(1, 1, 1); msh->buildNormals(); msh->buildBoundingBox(); msh->InvalidateEdgeList(); Matrix3 tm; tm.IdentityMatrix(); node->Reference(tri); node->SetTransform(0,tm); ii->AddNodeToScene(node); node->SetName(_T("JetRock model")); ii->RedrawViews();Sergio10
Savin Denis