2016-08-16 2 views
0

Vector3f 목록에 정점 데이터 (float[])를 어떻게 추가 할 수 있습니까? 시도하면 오류가 발생합니다.이 float [] vertexData를 Vector3f리스트에 어떻게 추가 할 수 있습니까?

float[] vertexData = new float[ allindices2.length * vertexDataSize/3]; 
for (int i = 0; i < vertexData.length/vertexDataSize; i++){ 
     vertexData[i * vertexDataSize + 0] = Float.parseFloat(allindices2 [Integer.parseInt(allindices2 [i * source.size() + 0]) * 3 + 0]); 
     vertexData[i * vertexDataSize + 1] = Float.parseFloat(allpositions2[Integer.parseInt(allindices2[i * source.size() + 0]) * 3 + 1]); 
     vertexData[i * vertexDataSize + 2] = Float.parseFloat(allpositions2[Integer.parseInt(allindices2[i * source.size() + 0]) * 3 + 2]); 

     vertices.add(vertexData); 
} 
+0

로 기록 될 수 있습니다 당신은 캔트 (직접). Vector3f는 float 배열과 동일한 데이터 유형이 아닙니다. 또한 문제는 XML 또는 Collada와 어떤 관련이 있습니까? – CConard96

+0

xml과 collada를 넣는 것은 나쁘지 만 (사과), 직접 할 수 없다면 어떻게 할 수 있습니까? 나는 간단한 해결책을 찾으려고 노력하고있다. – GraphicsPadawan

답변

1

당신이 다른 어떤 이유로 vertexData 배열이 필요하지 않은 경우, 당신은 전혀 생성하지 않아야합니다. 대신, 필요한 Vector3f 인스턴스를 직접 생성 할 수 있습니다. 그럼에도 불구하고

for (int i = 0; i < vertexData.length/vertexDataSize; i++){ 

     float x = Float.parseFloat(allindices2 [Integer.parseInt(allindices2[i * source.size() + 0]) * 3 + 0]); 
     float y = Float.parseFloat(allpositions2[Integer.parseInt(allindices2[i * source.size() + 0]) * 3 + 1]); 
     float z = Float.parseFloat(allpositions2[Integer.parseInt(allindices2[i * source.size() + 0]) * 3 + 2]); 

     vertices.add(new Vector3f(x,y,z)); 
} 

, 모든 parse... 통화 및 일반 구조는 매우 반신 반의 본다. 파일에서이 데이터를 직접 얻지 않는 한 다른 데이터 모델을 고려해야합니다. 또한

:

  • 는 첫 번째 allindices2allpositions2하지 않을 것이 확실합니까?
  • 두 번 일할 필요가 없습니다. 인덱스 계산을 풀 수 있습니다.

대부분의 경우는 코드는

for (int i = 0; i < vertexData.length/vertexDataSize; i++){ 
     int index = Integer.parseInt(allindices2[i * source.size()]); 
     float x = Float.parseFloat(allpositions2[index * 3 + 0]); 
     float y = Float.parseFloat(allpositions2[index * 3 + 1]); 
     float z = Float.parseFloat(allpositions2[index * 3 + 2]); 
     vertices.add(new Vector3f(x,y,z)); 
} 
관련 문제