2013-09-05 14 views
6

Budowałem małą aplikację 3D za pomocą ThreeJS i WebGL. Celowo zdecydowałem się nie konwertować modeli na pliki .json kompatybilne z ThreeJS, zamiast tego zacząłem budować importera. Działa, ale planowałem również, aby aplikacja zdecydowała, jaki typ modelu został załadowany przy użyciu zarówno rozszerzenia pliku, jak i typu MIME, późniejszy, jeśli pierwszy nie jest znany.MIME Typ OBF i MTL Wavefront

Czytałem gdzieś, że typ MIME ma być application/wavefront-obj, co byłoby dość dziwne, ponieważ istnieje również drzewo model, ale w porządku i tak. Chociaż przeglądanie strony IANA dla tego typu pliku nie daje żadnych wyników.

Czy brakuje mi czegoś?

+1

Jedyne odniesienie, jakie można znaleźć poprzez szybkie google, to [Wikipedia] (http://en.wikipedia.org/wiki/Wavefront_.obj_file), które mówi "text/plain". – tripleee

+0

@tripleee Zbyt ogólnikowa na moje potrzeby, ale przynajmniej jedno potwierdzenie, że nie brakuje mi czegoś oczywistego ... Sądzę, że pozostanę przy pseudo-MIME. W każdym razie dzięki. – Kiruse

Odpowiedz

5

According to wikipedia, to "tekst/zwykły" dla .obj.

Zgaduję, że to „text/plain” dla plików .mtl jak dobrze, ponieważ nie ma w nich tekst i ponieważ „to standard zdefiniowany przez Wavefront Technologies za plików ASCII.

+0

Wiem, że to standard dla plików ASCII, ale wydaje się zbyt ... niejednoznaczny. System (automatyczny), który zbudowałem, decyduje, jak analizować zasoby w oparciu o różne czynniki, z których jeden jest typem MIME. Ponieważ jest to ASCII, nie ma żadnej magicznej liczby, na której mógłbym polegać. Poza tym obsługa plików w JavaScript nie jest szczególnie przydatna ... Dam ci to jeszcze trochę czasu, dzięki za próbę zwrócenia na to większej uwagi. Gdy wygasa nagroda, zaznaczę tę odpowiedź jako odpowiedź. – Kiruse

+0

Pewnie. Wpadłem na to sam, robiąc pliki gzip .obj serwera przez ajax (aby zaoszczędzić czas i przepustowość). Musisz znać typ MIME, aby określić go w konfiguracji nginx. – kangax

+0

Oczywiście "tekst/zwykły" nie jest wystarczająco dokładny, tak jak w moim przypadku. Chociaż nie wydaje mi się, żeby tak naprawdę było coś jeszcze, być może ktoś ma inne rozwiązanie. Mój przypadek jest spełniony, po prostu używając fałszywego MIME, ale nie jestem pewien co do nginx. – Kiruse

0

Zaskoczyło mnie, że nie widzę niczego w plikach oblatywnych wavefront, biorąc pod uwagę, że kopią one w Internecie od co najmniej 20 lat. Byłbym szczęśliwy mogąc współpracować z innymi przy tworzeniu oficjalnego typu MIME.

Do tego czasu, zgodnie z sekcją 3.3 z RFC 6838, "Drzewo osobiste lub próżność", możesz użyć do tego własnego typu mediów, np. text/prs.wavefront-obj, oprócz text/plain. W ten sposób możesz użyć nagłówka HTTP Accept, aby wynegocjować odpowiedni typ MIME w odpowiedzi.

+0

Byłem zaskoczony, że trudno jest znaleźć coś w tym zakresie w ogóle. Przypuszczam, że .obj jest nieco przestarzały, ale jego prostota z pewnością znajduje gdzieś zastosowanie. – Kiruse

+0

Nie sądzę, że obj jest w ogóle nieaktualny. Jest to bardzo użyteczny format "wspólnego gruntu" dla geometrii pomiędzy wieloma aplikacjami. – legalize

+0

Tak, rzeczywiście. Właśnie dlatego powiedziałem, że jest trochę przestarzały. Jedyne cechy, których moim zdaniem brakuje, to dynamika i fizyka. Jest przeznaczony tylko dla modeli statycznych, więc jego wartość dla animacji jest oczywiście dość niska. Pod tym względem naturalnie faworyzowalibyśmy inny format. Aspekt fizyki idzie w parze z poprzednim. – Kiruse

1

Musisz zaktualizować web.config i dodać odwołanie do obj plików typu

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <staticContent>   
      <remove fileExtension=".obj" /> 
      <mimeMap fileExtension=".obj" mimeType="text/plain" /> 
     </staticContent> 
    </system.webServer> 
</configuration> 
0

typ Zastosowanie MIME "application/obiektu" dla plików .obj. Działa w Chrome, Safari i FireFox.