2011-10-09 9 views
9

Motive
Próbuję utworzyć małą aplikację demonstracyjną przy użyciu WebGL. Zdecydowałem się użyć SceneJS, ponieważ wydawało się to łatwą strukturą i byłoby więcej niż wystarczające do tego celu.Konwertuj model 3D na SceneJS JSON, w tym teksturę

Pobrałem kilka modeli .blend (między innymi Amy Rose) i wyeksportowałem je jako plik Collada (.dae) za pomocą Blendera. Potem użyłem scenejs-pycollada, aby przekonwertować je na model json.

Właśnie spędziłem kilka godzin, aby konwerter scenejs-pycollada zadziałał. Najwyraźniej uzyskanie tych zależności Pythona do pracy w systemie Windows nie jest takie proste, jeśli nigdy wcześniej nie korzystałeś z Pythona. ;)

Problem
Ale teraz utknąłem (znowu). Mój problem polega na tym, że modele nie mają żadnych tekstur ani materiałów.

Użyłem Seymour Plane Example SceneJS. Model, który skonwertowałem, jest ledwo widoczny. Jest czarny i nie reaguje na oświetlenie sceny. Jeśli załaduję samolot i model razem, widzę, że model jest załadowany, ponieważ jego ręce i nogi wystają z samolotu.

Teraz poszedłem za kilkoma tutorialami, które pozwoliły mi wyeksportować teksturę jako obraz PNG. Następnie zmodyfikowałem nazwę pliku tekstury w modelu JSON, aby pasowała do nazwy pliku, ale to nie pomaga.

Mam nadzieję, że ktoś może mi pomóc znaleźć sposób na eksport modeli Blendera (lub innych popularnych modeli 3D) do formatu JSON używanego przez SceneJS, w tym tekstur.

Każda inna metoda ładowania modeli w SceneJS będzie działać tak długo, jak to będzie działać.

Jeśli ktoś ma link do darmowych plików do pobrania z modelami JSON ciała/figury, to na razie by to pomogło, ale wolę dowiedzieć się, jak to działa. :)

Używam 64bit

  • Windows 7 Home Premium
  • Python 2.7 (Windows 32bit)
    wybrałem wersję 32 bitową, ponieważ pozornie lepsze wsparcie dla bibliotek oraz więcej dostępnych instalatorów. Na początku pomieszałem 32- i 64-bitowe i sprawiło mi to kłopot, ale teraz wszystko wydaje się działać (z wyjątkiem tekstur).
  • Blender 2.59
  • SceneJS 0.8.0

Mój workflow
w Blenderze eksportować modele do Collada (* .dae) plików, a następnie konwertować je do surowego JSON za pomocą scenejs- pycollada. Daje mi to plik JSON z dwoma obiektami. Pierwsza wydaje się być sceną, a druga modelem. Zatrzymuję drugi i umieszczam go w zmiennej JavaScript używanej w kodzie przykładu SceneJS. Model kończy się właściwościami , "type": "library", "parent": "Scene", które muszę usunąć z kodu, aby w ogóle się załadować.

Odpowiedz

7

Właściwie jestem autorem scenejs-pycollada.Pozwól mi zobaczyć, czy mogę pomóc :)

widzę używasz wersji 0.8 z SceneJS ... rzeczy zostały raczej w ruchu, więc może faktycznie najłatwiej wyciągnąć scenejs-pycollada 2.0 branch of SceneJS from github iz mojego personal repo . Zasadniczo celowałem w SceneJS 0.9 za pierwszą wersję scenejs-pycollada, ale ta wersja nigdy oficjalnie nie została wydana. Ponadto, na dłuższą metę nie będziesz musiał przepisywać wszystkiego, jeśli przełączysz się teraz ...

Problemowa kompilacja Windows jest również dużym cierniem, naprawdę chciałabym, aby numpy devi naprawili to dla ciebie. Ludowy. Po wydaniu wersji SceneJS 2.0 wydam oficjalną wersję scenejs-pycollada dostarczoną z wszystkimi niezbędnymi zależnościami dla Windows.

Możesz więc skomentować tę odpowiedź lub zaktualizować swoje pytanie. Spróbuję to sprawdzić.

P.S. Alternatywnie, jeśli jesteś naprawdę sfrustrowany, faktycznie mam drugiego eksportera blenderów pod numerem https://github.com/rehno-lindeque/Blender-WebGL-exporter, ale nie polecam używania tego - jest bardzo przestarzały. Jedyny inny eksporter collady scenejs został wycofany dawno temu.

P.P.S. Jest też i przykład i kilka modeli testowych w samej scenie-pycollada. Jeśli chcesz tylko szybki model do zabawy, sprawdź https://github.com/rehno-lindeque/scenejs-pycollada/tree/master/example, choć wprawdzie nie jest to najładniejszy model w historii.

P.P.P.S. W rzeczywistości jeden z powodów, dla których model Amy Rose nie działał dobrze, jest taki, że scenejs-pycollada nie obsługuje jeszcze wielu materiałów. Szybko dodam wsparcie tej dzisiejszej nocy.

+0

Dziękujemy! Wygląda na to, że działa z twoją wersją scenejs-pycollada i SceneJS 2.0. Nie trzeba też rekompilować niczego, więc to dobrze. ;) Nie obwiniam zbytnio facetów Numpy, to była wielka wina z instalacji niekompatybilnych wersji różnych bibliotek. W tej chwili próbuję GLGE, który ktoś polecił. (ładuje pliki .dae bez ich konwertowania). Na razie muszę sprawić, żeby moje demo działało, ale mam nadzieję, że wkrótce znajdę czas na ponowne zbadanie SceneJS. Dzięki jeszcze raz. – GolezTrol

+0

Nie ma problemu, więcej błędów daj mi znać :) –