Blend4Web | |
---|---|
Sorts | Verktyg för interaktiv 3D-grafik |
Utvecklaren | Triumf |
Skrivet i | JavaScript , Python , C , C++ |
Första upplagan | 28 mars 2014 |
senaste versionen | 18.05.0 |
stat | Aktiva |
Licens | GPLv3 eller kommersiell |
Hemsida | blend4web.com |
Blend4Web är ett ramverk med öppen källkod för att skapa och visa interaktiv 3D-grafik i webbläsare . Blend4Web använder Blender 3D-modelleringspaketet med öppen källkod för att förbereda innehåll.
Utvecklat och släppt 2014 av det ryska företaget Triumph, som även tillhandahåller en kommersiell produktlicens (inklusive exempel på färdiga applikationer) och tekniska supporttjänster.
Förberedelse av audiovisuellt innehåll för Blend4Web utförs i Blender 3D-modellerings- och animationspaketet . Innehåll spelas upp med hjälp av WebGL , Web Audio och andra vanliga webbläsartekniker, utan användning av några tillägg [1] .
Ramverket distribueras under villkoren för dubbla licenser , under de öppna GPLv3 och kommersiella licenserna. Källkoden finns i arkivet på GitHub [2] .
3D-scenen skapas i Blender och exporteras som en JSON -fil och en binär fil som ska laddas av webbapplikationen . Scenen kan också exporteras som en enda, fristående HTML -fil som packar exporterad data, webbspelarens användargränssnitt och den körbara koden [3] . Export i HTML-format anses vara det enklaste sättet att arbeta med Blend4Web [4] . Den resulterande filen med en minsta storlek på cirka 1 MB kan placeras på en webbsida med hjälp av standardelementet [5] . Blend4Web-baserade webbapplikationer kan distribueras på populära sociala nätverk som Facebook [6] och VKontakte . <iframe>
Programvarukomponenterna för Blend4Web inkluderar JavaScript-bibliotek , ett tillägg för Blender och en uppsättning verktyg för att ställa in 3D-scenparametrar, felsökning och optimering.
Utvecklingen av Blend4Web startades av Moskvaföretaget Triumph 2010. Den första offentliga utgivningen ägde rum den 28 mars 2014 [7] .
Ramverket innehåller ett antal komponenter som vanligtvis finns i spelmotorer , inklusive ett positioneringssystem för ljudkälla, en fysikmotor ( en gaffel från Bullet physics-motorn portad till JavaScript ), ett animationssystem och ett abstraktionslager för programmering av spellogik [8 ] .
Upp till 8 animationer av olika typer kan tilldelas varje objekt, inklusive skelett- och vertexanimationer. Hastigheten och riktningen för animeringen, såväl som parametrarna för partikelsystem (storlek, initial hastighet och antal) kan ställas in via API:et [9] .
Dynamisk laddning och avlastning av data, ljuskartor stöds , det är möjligt att simulera spridning under ytan [10] .
Det finns lösningar för att rendera utomhusscener, inklusive vindsimulering, vattensimulering, atmosfäriska effekter. Arbetet med denna funktion demonstreras i Farm -demovideon , som också innehåller många animerade icke-spelarekaraktärer , möjligheten att flytta runt på platsen med en förstapersonsvy, interaktion med objekt och fordonskontroll [11] .
På grund av användningen av WebGL -teknik för flera webbläsare fungerar Blend4Web i alla större [12] webbläsare , inklusive mobila enheter [13] . Men i webbläsare med en experimentell implementering av WebGL-standarden, såsom Internet Explorer , stöds inte Blend4Web-funktioner fullt ut [14] . Det finns applikationer som kan köras på operativsystemet Tizen , i synnerhet på Samsung Gear S2 smartwatches [ 15] .
Bland de funktioner som inte är triviala för webbläsarramverk kallas följande: optimering genom att kombinera ritanrop, optimering genom att skära bort dolda objekt, göra fysiska beräkningar i en separat exekveringstråd , simulera havsvågornas beteende [16] .
I version 14.09 implementerade Blend4Web möjligheten att implementera interaktivitet i 3D-scener med hjälp av det visuella programmeringsverktyget . Verktyget liknar logikredigeraren i Blenders inbyggda spelmotor, i synnerhet, som BGE, använder det visuella logikblock inbyggda i Blender-gränssnittet. Animationssekvenser skapade av artisten spelas som svar på användarinteraktion med vissa 3D-objekt [17] [18] .
Från och med version 15.03 stöder Blend4Web att bifoga 2D HTML-element (till exempel infofönster) till 3D-objekt (så kallade annoteringar), samt att kopiera objekt medan applikationen körs ( instansering ) [ 19] .
Efterbehandlingseffekter som stöds inkluderar glödande ytor ( glöd ), blomning , kameras skärpedjup , skymningsstrålar , rörelseoskärpa och korsskuggning ( SSAO ) [20] .
Stöd för virtuell verklighetsenheter implementerades i slutet av 2015. Driften av Oculus Rift- hjälmen tillhandahålls av det experimentella WebVR API . [21]
Blender -tillägget är skrivet i Python och C och kan kompileras för Linux x86/x64, OS X x64 och MS Windows x86/x64-plattformar.
Inställningsprofilen för Blend4Web är aktiverad i tilläggsinställningarna. Att byta till en profil bygger om Blender-gränssnittet och tar bort alla inställningar som inte stöds samtidigt [22] .
Blend4Web stöder ett antal Blender-specifika funktioner såsom nodmaterialredigeraren (ett verktyg för visuell shader- programmering ) [23] och partikelsystemet [24] . Det finns också initialt stöd för en icke-linjär animationsredigerare (NLA) som en del av Blender-paketet för att skapa enkla skript.
För ett liknande visuellt resultat i redigeraren och i webbläsaren ( WYSIWYG ), rekommenderas användare att byta till GLSL -renderingsläget som tillhandahålls av Blender [25] .
Liksom Blenders inbyggda spelmotor ( Blender Game Engine , BGE) laddar Blend4Web in Blender-förberedd scendata utan att använda någon mellanredigerare [ 4] . Blend4Web-baserade applikationer är designade för att köras i webbläsare, medan BGE körbara körs utanför webbläsare [26] [27] . Blend4Webs API :er är implementerade i JavaScript , till skillnad från de Python -baserade API:erna i Blenders inbyggda motor. Istället för en visuell BGE-logikredigerare, som inte stöds av Blend4Web, förutsätter den senare användningen av standardmetoder för webbutveckling.
Unity har kunnat exportera till WebGL sedan version 5 [28] . Implementeringen av WebGL-stöd är dock experimentell till sin natur, i synnerhet i WebGL-versionen är stöd för mobila enheter, ljudkällas positioneringssystem och videotexturer inte planerat inom en snar framtid [29] .
Three.js WebGL-biblioteket kräver skrivning av kod för att utföra triviala uppgifter, vilket höjer ingångströskeln och förlänger inlärningskurvan; i Blend4Web kräver det mesta av arbetet med att förbereda onlinepresentationer inte programmering [30] .
NASA har utvecklat en interaktiv webbapplikation för treårsdagen av landningen av Curiosity-rover [31] . Den Blend4Web-baserade applikationen [32] implementerar roverrörelser, kamera- och manipulatorkontroll och återger några kända uppdragshändelser [33] [34] . Ansökan presenterades i början av WebGL-sektionen på SIGGRAPH 2015 [35] .