2017-09-07 2 views
0

크기를 조정하려는 3D 개체가 쉽고 빠릅니다.각 3D 개체의 크기를 개별적으로 조정하는 방법

내 코드 xoppa의 카드 게임의 예와 매우 유사합니다 :

https://xoppa.github.io/blog/a-simple-card-game/

개체는 사용하여 렌더링됩니다 ModelBatchRenderableProvider : 항목 RenderableProvider를 구현하는 ObjectSet입니다

@Override 
public void render() { 
    ... 
    modelBatch.begin(cam); 
    modelBatch.render(items); 
    modelBatch.end(); 
    ... 
} 

.

meshBuilder.begin(mesh.getVertexAttributes()); 
meshBuilder.part("items", GL20.GL_TRIANGLES, renderable.meshPart); 
for (Item item : this) { 
    meshBuilder.setVertexTransform(item.transform); 
    meshBuilder.addMesh(item.vertices, item.indices); 
} 
meshBuilder.end(mesh); 

이제 어떻게 내가하고 싶은 것은 몇 가지 화려한 애니메이션 효과를 확인하기 위해 항목의 크기를 조정하는 것입니다

item 정점과 인덱스는 MeshBuilder 사용하여 추가됩니다. PerspectiveCamera을 사용하고 거리 매개 변수를 변경할 수 있다고 생각합니다. 그러나 각 항목을 독립적으로 크기를 조정하려면 어떻게해야합니까? 내가 스케일링에 거는 그들을 통해에 때마다 루프를 필요로하므로 직접 크기 조정 (스케일) 요인에 의해이 내가 정점을 곱한 각 render() 전화의 각을 (item.vertices)를 해결하려고하기

하지만, 각 Item 약 140 정점을 가지고 인자.

각 항목의 크기를 조정하는 효과적인 방법이있을 것이라고 생각합니까?

답변

1

스케일링 작업을 포함하도록 각 프레임 item.transform 행렬을 수정하십시오. 행렬 사용의 전체 요점은 수학적으로 조합 가능하다는 것입니다.

은 참조 :

https://en.wikipedia.org/wiki/Scaling_(geometry)

+0

어떤 이유로 나는이 위치하지 크기를 조정 것처럼 보였다 전에 내가 시도 할 때. 하지만 이제 다시 시도 할 때 실제로 Matrix4.scale() 함수를 사용하여 작동합니다. 내 잘못이야 :-) – Henrik

관련 문제