MAXSCAN 고급텍스쳐링 후 Space Tracker Load 실패
Please provide your development details as below;
1. SDK Version: 6.1.0
2. Development Environment: Unity-iOS, MacOS 14.1, M2 MAX
3. Tracker/Scanner: Space Tracker
4. License Type(Free / Pro-One Time Fee / Pro-Subscription / Enterprise): Pro-One Time Fee
5. Target Device(Optional):
MAXSCAN 어플리케이션을 통해 공간을 스캔한 후 고급 텍스쳐링을 한 다음 파일을 가져와서 Load 하였을 때 아래와 같은 오류가 발생했습니다.
한가지 스캔 파일은 정상적으로 로딩이 되었으나,
해당 파일 및 다른 파일에서는 아래의 오류나 File doesn't exist 와 같은 오류가 발생합니다.
해결방법이 있나요?
MAXST AR SDK에 관심을 가져주셔서 감사합니다.
텍스처링 중에 오류가 발생하여 vertex 값중에 nan 이 있는 것 같습니다.
답글에 파일을 올려주시면 분석 후 답변 다시드리도록 하겠습니다.
감사합니다.
Best regards,
Shelden
MAXST Support Team
답글에 파일이 업로드 되지 않는것같습니다.
파일 공유 가능한 이메일 알려주시면 메일로 전송하도록 하겠습니다.
sdk@maxst.com 으로 보내주세요.
감사합니다.
먼저 불편을 드려 죄송합니다.
Asserts > MaxstAR > OBJLoader > FileReader.cs 의 ReadObjectFile 함수를 아래 코드로 교체해주시면 정상적으로 로드될 것입니다.
public static ObjectFile ReadObjectFile(string path)
{
ObjectFile obj = new ObjectFile();
string[] lines = File.ReadAllLines(path);
obj.usemtl = new List();
obj.v = new List();
obj.vn = new List();
obj.vt = new List();
obj.f = new List>();
obj.vc = new List();
foreach (string line in lines)
{
if (line == "" || line.StartsWith("#"))
continue;
string[] token = line.Split(' ');
switch (token[0])
{
case ("o"):
obj.o = token[1];
break;
case ("mtllib"):
obj.mtllib = token[1];
break;
case ("usemtl"):
obj.usemtl.Add(token[1]);
obj.f.Add(new List());
break;
case ("v"):
obj.v.Add(new Vector3(
float.Parse(token[1]),
float.Parse(token[2]),
float.Parse(token[3])));
if (token.Length == 7)
{
obj.vc.Add(new Vector3(
float.Parse(token[4]),
float.Parse(token[5]),
float.Parse(token[6])));
}
break;
case ("vn"):
obj.vn.Add(new Vector3(
float.Parse(token[1]),
float.Parse(token[2]),
float.Parse(token[3])));
break;
case ("vt"):
obj.vt.Add(new Vector3(
float.Parse(token[1]),
float.Parse(token[2])));
break;
case ("f"):
for (int i = 1; i < 4; ++i)
{
int[] triplet = Array.ConvertAll(token[i].Split('/'), x =>
{
if (String.IsNullOrEmpty(x))
return 0;
return int.Parse(x);
});
if (obj.f.Count == 0)
{
obj.f.Add(new List());
}
obj.f[obj.f.Count - 1].Add(triplet);
}
break;
}
}
return obj;
}
이 부분은 다음 업데이트 때 반영하도록 하겠습니다.
전체파일은 메일로 전송하도록 하겠습니다.
감사합니다.
Best regards,
Shelden
MAXST Support Team
빠른 답변 감사드립니다.
현재 Pro-One Time Fee License를 사용하고 있는데,
업데이트를 한다면 해당 업데이트를 제공받을 수 있는건가요?
아닙니다.
점심시간 중이라 담당자가 메일을 아직 전달 드리지 못한 것 같습니다.
전달해드렸다는 연락을 받았으니 지금 확인하시면 메일이 도착해있을 것입니다.
감사합니다.