wszyscy! Pracuję nad projektem, w którym biorę "podstawowy" model/siatkę, i tworzę go tak, aby wyglądał jak bardziej określony teren. Mam jednak problem, gdy próbuję edytować siatkę. Jest to w zasadzie jak to zrobić: (assets
jest AssetManager
)Model siatki edycji LibGDX z szablonu
Model terrain = assets.get("terrain.g3db", Model.class);
Mesh template = null;
for (float x = 0; x <= maxX; x += 1f) {
for (float z = 0; z <= maxZ; z += 1f) {
Mesh m = template.copy(false);
// get proper vertices here
mesh.setVertices(vertices);
terrain.calculateTransforms();
terrain.meshes.set(0, mesh);
ModelInstance terrainInstance = new ModelInstance(terrain);
terrainInstance.transform.setToTranslation(x, 0, z);
instances.add(terrainInstance);
}
}
Jedynym problemem jest to, kiedy to zrobić po prostu uzyskać płaski teren. Po usunięciu tej linii:
terrain.meshes.set(0, mesh);
Dostaję teren, ale każda instancja modelu ma to samo. Aby rozwiązać ten problem, trzeba usunąć tę linię i dodać ten jeden:
terrain.meshes.get(0).setVertices(vertices);
co myślę dzieje się z linią, która powoduje płaski mapa jest kiedy ustawić go, usuwa wszystko, co mógłby powiedzieć, "Hej, ta siatka odnosi się do tej części modelu".
Ekranów:
Z linii, która powoduje płaską mapę: Picture
Bez tej linii: Picture
UPDATE: Dzięki komentarzu Xoppa za co sugeruje, że załadować nowy model dla każdego rzutu, ale w tym celu muszę użyć G3dModelLoader
. Chciałbym użyć AssetManager
, jeśli jest to możliwe, ale nie sądzę, że jest ...
O co więc chodzi? – Xoppa
Jak to naprawić, tak że nie mam modeli po prostu ułożone w tablicy. Chcę, żeby modele miały siatki niezależne od siebie. – mttprvst13
Jeśli chcesz utworzyć wiele modeli, utwórz wiele modeli. W twoim kodzie masz tylko jeden model. – Xoppa