큰 STL 파일을 읽고 구문 분석하는 방법은 무엇입니까? 3D STL 파일을 볼 응용 프로그램을 작성합니다. 3D STL 파일은 2 진 또는 ACSII 일 수 있습니다. sdcard에서 STL 파일을 읽고 OpenGL을 사용하여 렌더링 할 데이터를 파싱해야합니다. 그러나 3D STL이 클 때 "메모리 부족"현상이 나타납니다. 이 문제를 해결하는 방법. 나는 형식면과 꼭지점을 저장하기 위해 두 명의 arraylists를 사용합니다. 이것은 JVM의 최대 메모리 할당을 늘리는 것입니다 같은 상황에서 메모리 부족 문제가 해결큰 STL 파일을 읽고 구문 분석하는 방법은 무엇입니까?
private void processBinarySTL(){
Thread processThread =new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
File file=new File("/mnt/sdcard/3D/Lost_Pleiade_Ready.stl");
InputStream inputStream = null;
try {
inputStream = mContext.getContentResolver().openInputStream(Uri.fromFile(file));
int n = 0;
byte[] buffer = new byte[4];
inputStream.skip(80);
n = inputStream.read(buffer);
System.out.println("n=="+n);
int size=getIntWithLittleEndian(buffer,0);
System.out.println("size=="+size);
List<Float> normalList=new ArrayList<Float>();
List<Float> vertexList = new ArrayList<Float>();
for (int i = 0; i < size; i++) {
//normal
for(int k=0;k<3;k++){
inputStream.read(buffer);
normalList.add(Float.intBitsToFloat(getIntWithLittleEndian(buffer, 0)));
}
for(int j=0;j<3;j++){
inputStream.read(buffer);
float x = Float.intBitsToFloat(getIntWithLittleEndian(buffer, 0));
inputStream.read(buffer);
float y = Float.intBitsToFloat(getIntWithLittleEndian(buffer, 0));
inputStream.read(buffer);
float z = Float.intBitsToFloat(getIntWithLittleEndian(buffer, 0));
adjustMaxMin(x, y, z);
vertexList.add(x);
vertexList.add(y);
vertexList.add(z);
}
inputStream.skip(2);
}
System.out.println("normalList size== "+normalList.size());
System.out.println("vertexList size== "+vertexList.size());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(inputStream!=null)
try {
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
processThread.start();
}
는 http://code.j3d.org/javadoc/org/j3d/loaders/stl/STLFileReader.html –
@KarthikT을 찾고 있습니다 답장을 보내 주셔서 감사합니다. 나는이 자원을 모른다. 나는 그것을 공부할 것이다. – Judy
@ KarthikT j3d에 대해 살펴 보겠습니다. 하지만 그건 내 해결책이 아니야. 안드로이드 응용 프로그램에서 "view 3D STL File"을 구현해야합니다. – Judy