Czy istnieje sposób na przymocowanie siatki do kości? Na przykład ładuję animowaną postać .js i chcę dołączyć do niej broń.Three.js mocowanie obiektu do kości
Odpowiedz
Jest to możliwe za pomocą kilku prostych hacków na prototypie Bone i Object3D. Ponieważ kości dziedziczą z Object3D, mogą mieć dzieci, więc możemy łatwo .add() a mesh do dowolnej kości.
Jednak SkinnedMesh wywoła tylko updateMatrixWorld() na dzieciach innych niż Bone i update() dla dzieci Bone. Dodatkowo, kości wywołują update() dla każdego z jego dzieci (bez względu na to, czy jest to kość, czy nie). Poniższe fragmenty kodu zmieniają to zachowanie:
// modify bone update function to also update its world matrix
// possibly do this only to skeletons you need it for, not for all bones
var update = THREE.Bone.prototype.update;
THREE.Bone.prototype.update = function(parentSkinMatrix, forceUpdate) {
update.call(this, parentSkinMatrix, forceUpdate);
this.updateMatrixWorld(true);
};
// add noop update function to Object3D prototype
// so any Object3D may be a child of a Bone
THREE.Object3D.prototype.update = function() {};
// create buffalo ...
// create a mesh and add it to some bone
var mesh = new THREE.Mesh(new THREE.SphereGeometry(20), new THREE.MeshNormalMaterial());
var bone = buffalo.bones[5];
bone.add(mesh);
Three.js Wersja 68 obsługuje to po wyjęciu z pudełka, ale nieco inaczej. Nie jest konieczna zmiana wewnętrznych funkcji.
Teraz działa tak:
hierarchii kości jest teraz znaleźć u dzieci z SkinnedMesh.
Znajdź kość na liście dzieci i po prostu dołączyć obiekt do niego:
player.children[0].add(testObj);
Uwaga: Jeśli masz hierarchię kości (na przykład w eksportowanego modelu blendera), to jest reprezentowana w trzech. js też. Jeśli docelowa kość ma kość rodzicielską, będzie wyglądać następująco:
player.children[0].children[1].add(testObj);
- 1. THREE.JS jak przenieść kości SkinnedMesh?
- 2. Skalowanie obiektu w three.js
- 3. Mocowanie mechanizm sygnałów i slotów do obiektu w QSharedPointer
- 4. Mocowanie kontenera S3 do kontenera
- 5. Three.js Siatka aktualizująca obiektu TubeGeometry
- 6. Three.js: Obrót w środku obiektu
- 7. Mocowanie wielomian modelu do danych w R
- 8. Obróć kamerę wokół obiektu za pomocą Three.js
- 9. Eksport miksera do Three.js
- 10. Konwersja FBX do Three.js
- 11. THREE.JS: Pobierz rozmiar obiektu w odniesieniu do pozycji kamery i obiektu na ekranie
- 12. Jak przenieść obiekt do przodu w Three.js?
- 13. Jak mogę przekierować wyjście funkcji kości do pliku w Perlu?
- 14. Three.js THREE.Projector został przeniesiony do
- 15. Three.js przeniesiony do natywnego kodu?
- 16. Morfing z Three.js
- 17. Kostki w kości: Symulacja gry w Craps
- 18. Przenoszenie obiektu na podstawie jego obrotu w pliku three.js
- 19. THREE.js OBJ Obiekty ładujące
- 20. Odpowiednik instancji Three.js
- 21. Ukryty model Markowa dla kości trójstronnej
- 22. Co to są kości Potężnego CMS
- 23. Three.js Jak używać kwaternionu do obracania kamery
- 24. Mocowanie objętości kontenera do innego kontenera na innej ścieżce
- 25. artefakty przy renderowaniu obu stron przezroczystego obiektu za pomocą three.js
- 26. Mocowanie paska bocznego migotania na przewijanie
- 27. Mocowanie wcięcie gdy inicjalizatory obiektów zostały wykorzystane
- 28. Mocowanie C++ Wielokrotne dziedziczenie Niejednoznaczne połączeń
- 29. Z plikiem three.js mogę dołączyć informacje do obiektu, na przykład adresu URL?
- 30. Dynamiczne dodawanie wierzchołków do linii w Three.js
wow. taka odpowiedź. bardzo pomocny. bardzo dziękuję. łał. – Gugis