Number Type Converter, online 3D viewers: 3DM, 3DS, 3MF, AMF, ASSIMP, BIM, BREP, DAE, DST, FBX, GCODE, GLTF, IFC, IGES, JSON, LAS, LAZ, LDRAW, MMD, OBJ, PCD, PDB, PLY, PRWM, SPLAT, STEP, STL, SVG, USDZ, VRML, VTK, XYZ and Texture Viewer for PCX, PNG, JPG, BMP, GIF, TIFF, TGA, SVG, WEBP, DDS, KTX(2), EXR, HDR, BASIS, Lottie JSON. Some AR / VR.
GitHubDragonFly's Website - access it here.
Even though this is all usable, none of it is perfect so try to set your expectations accordingly.
The description below is a bit lengthy but should provide pertinent information.
Pictures and/or intro video might not reflect the current looks of any GUI.
This website is designed to serve as a hub with links to:
impossible dream of space exploration (currently rather distant future)3D Model and Texture viewersCube Shading, Celestial Bodies and IMG2MESH pages:
https://tartan-swanky-plutonium.glitch.me/
https://github.com/shaoruu/three-extruded-imageKTX2e) or UASTC (KTX2u) format can be selectedOriginally designed for a desktop but has been adapted to also show properly on mobile devices with some limitations:
D button:
github cdn.jsdelivr.net esm.sh networks are at the time of testingThe Mobile 3D button provides access to stripped down and simplified version of mobile friendly 3D viewers:
Quick Viewer, GM Viewer and GLTF Viewer also include some export options and more featuresURL loading on an iPadGitHub servers are providing correct access to all files:
CacheControl to last only for 10 minutes so you might need to refresh the current page as neededRepositories do contain projects in several different programming languages, or a mix of:
HTML / CSS / JavaScript / jQueryJavaVB.NetC#pythonshellThere is a lot of information and descriptions, some intended for Industrial Automation and some for general or personal use. All is good as an educational resource as well.
For those who either deal with or are just learning about Programmable Logic Controllers (PLC):
The Intro button on the desktop main menu page will connect to the intro video below:
URL option, provided that you have the actual model's URL availablehttps://github.com/user-attachments/assets/25436e28-3b4d-4165-85db-21e8033ef42a
Main Menu Page (desktop)
Main Menu Page (mobile)
-75-88.5 under Float32 then it will be parsed as -75)Number Type Converter
AR and/or VR button should remain visible if your device supports it:
They are functional AS THEY ARE
Purely designed as an online convenience
Intended for viewing a single 3D model or scene:
URL button, which has associated URL textboxBrowse... or Choose FilesBrowse buttonAny of the viewers might have bugs and interface / library related limitations
WASM of some libraryMost desktop viewers will also allow you to test multiple image formats by setting either of them as a background and even turning it into an equirectangular environment
Currently experimental three.js WebGPU support is included in the following experimental viewers, either their standalone or desktop or mobile version:
GLTF, OBJ+MTL, PDB and PLY+STL WebGPU viewers:WebGPU experimental features enabled to test these viewers (and your computer):
GLTF WebGPU viewer can also be used to optimize and compress GLTF / GLB modelsGLTF, OBJ+MTL and PDB viewers are available but not properly tested yetGLTF WebGPU, OBJ+MTL WebGPU and PLY+STL WebGPU viewers are available in the viewers/webgpu/ folder:
PLY+STL WebGPU standalone viewer is using the official three.js PLY Loader and STL Loader imports:
PLY or STL model that does not have built-in UVsGLTF WebGPU standalone viewer is using the official three.js GLTF Loader importOBJ+MTL WebGPU viewers are using built-in custom version of OBJ Loader and MTL Loader:
PP button):
GLTF and OBJ+MTL WebGPU viewersMemory handling should be good, relatively speaking:
Desktop viewers should be usable on as low as 800 x 600 screen resolution:
Different three.js revisions are used throughout and with lots of customized code:
importmap and module imports:
non-module version of three.js files then consider using the Demoduler which might have some limitationsError handling narrows down to showing the ERROR! message so check the console output for details
On a desktop computer, most viewers will show some renderer info in the console after the model is loaded (like number of draw calls, triangles ... etc)
To modify or customize your 3D model:
These would be the mouse controls:
zoomToCursor feature enabled, which should work with touch controls as wellSpecial notes about AR / VR Viewer:
DeviceOrientationControls, last available in r133Special notes about A-FRAME Viewer:
Special notes about SPLAT Viewer:
https://raw.githubusercontent.com/GitHubDragonFly/GitHubDragonFly.github.io/main/viewers/examples/legobrick.splathttps://lumalabs.ai/capture/ca9ea966-ca24-4ec1-ab0f-af665cb546ffSpecial notes about GLTF viewers:
GM Viewer is for v2.0 glTF files and is currently using Google's model-viewer web component:
M buttonGLTF Viewer is for v2.0 glTF files and is currently using r178 of three.js:
pbrSpecularGlossinessKHR_animation_pointerGLTFS Viewer is for v2.0 glTF files and is currently using r150 of three.js:
pbrSpecularGlossinessAnisotropy or currently arbitrary KHR_animation_pointerGLTF Legacy viewer is for v1.0 glTF files and is purely experimental and rather limited (see notes further below)Special notes about ASSIMP Viewer which is using ASSIMPJS interface and ASSIMP library:
glTF + BIN + textures formatting:
https://github.com/KhronosGroup/glTF-Sample-Models/blob/master/1.0/BarramundiFish/glTF-Binary/BarramundiFish.glbhttps://github.com/KhronosGroup/glTF-Sample-Models/blob/master/1.0/BarramundiFish/glTF-Embedded/BarramundiFish.gltfhttps://github.com/KhronosGroup/glTF-Sample-Models/blob/master/1.0/BarramundiFish/glTF/BarramundiFish.gltf, https://github.com/KhronosGroup/glTF-Sample-Models/blob/master/1.0/BarramundiFish/glTF/BarramundiFish.bin, https://github.com/KhronosGroup/glTF-Sample-Models/blob/master/1.0/BarramundiFish/glTF/BarramundiFish_texture_0001.jpg, https://github.com/KhronosGroup/glTF-Sample-Models/blob/master/1.0/BarramundiFish/glTF/BarramundiFish_texture_0002.jpg, https://github.com/KhronosGroup/glTF-Sample-Models/blob/master/1.0/BarramundiFish/glTF/BarramundiFish_texture_0003.jpg, https://github.com/KhronosGroup/glTF-Sample-Models/blob/master/1.0/BarramundiFish/glTF/BarramundiFish_texture_0004.jpg, https://github.com/KhronosGroup/glTF-Sample-Models/blob/master/1.0/BarramundiFish/glTF/BarramundiFish0FS.glsl, https://github.com/KhronosGroup/glTF-Sample-Models/blob/master/1.0/BarramundiFish/glTF/BarramundiFish0VS.glslflatShading turned ON so hit the F button to turn it OFF if requiredTHREE.MeshPhysicalMaterial to bring a GLTF alike functionality for OBJ + MTL modelsJSONASSJSONJSON and ASSJSON exported files use the same .json extensionglTF + BIN + textures (just use the URL of the GLTF model)GLB2 and passed on to the three.js GLTF Loader for displayingURL option remember the following:
https://raw.githubusercontent.com/assimp/assimp/master/test/models/OBJ/spider.obj, https://raw.githubusercontent.com/assimp/assimp/master/test/models/OBJ/spider.mtlhttps://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/main/2.0/CesiumMilkTruck/glTF/CesiumMilkTruck.gltf, https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/main/2.0/CesiumMilkTruck/glTF/CesiumMilkTruck.binhttps://raw.githubusercontent.com/assimp/assimp/master/test/models/MD2/faerie.md2, https://raw.githubusercontent.com/assimp/assimp/master/test/models/MD2/faerie2.bmphttps://raw.githubusercontent.com/SaschaWillems/VulkanSponza/master/data/sponza.dae, https://raw.githubusercontent.com/SaschaWillems/VulkanSponza/master/data/sponza/https://raw.githubusercontent.com/oecax2208/PyMikuMikuDance/master/example/vdproject_peach_v1/小桃初代女仆v1.pmx, https://raw.githubusercontent.com/oecax2208/PyMikuMikuDance/master/example/vdproject_peach_v1/Texture/Special notes about mobile Quick Viewer which is using Online 3D Viewer engine:
favicon.ico import)https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/CesiumMilkTruck/glTF/CesiumMilkTruck.gltf, https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/CesiumMilkTruck/glTF/CesiumMilkTruck_data.bin, https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/CesiumMilkTruck/glTF/CesiumMilkTruck.jpgSpecial notes about USDZ Viewer:
Special notes about GLTF Legacy viewer:
Menu with controls can be located either on top or on the bottom of the page
Almost all viewers include the interactive Orbit Controls Gizmo for orientation, either old or new version
Most viewers, if not all, have been tested as functional in the latest Firefox / Chrome / Edge / Safari browsers
Some loading instructions are also available in HTML_CSS_JS_Flask and HTML_CSS_JS repositories
Drag-and-drop is currently only supporteded in current standalone and desktop WebGPU viewers
ZIP file support is currently only available in OBJ+MTL viewers and current standalone and desktop WebGPU viewers
Import files locally from a file browser dialog:
Import files via remote URL:
URLS4MODELS.md file for corresponding URL examplesImport formats, where applicable, with any optional or required textures:
images folder also includes threadNormal and threadTexture images from the same websiteExport formats, where applicable:
OFF exports are only available in the Quick Viewer, as stated further above
BIM exports are available in the Quick Viewer as well as some other viewers with custom BIM Exporter
3MF exporter was created with assistance from Microsoft Copilot:
material.map texture exporting.3mf file:
AMF exporter was created with assistance from Microsoft Copilot:
3DM exports are powered by rhino3dm, with the following notes:
GCODE exports are powered by Polyslice:
.gcode file and do a simple model testPRWM exports are powered by PRWM
ASSJSON, FBX, STEP, X3D and X exports are powered by ASSIMPJS and ASSIMP:
Animated GIF export is based on mrdoob's example using omggif library:
currently set to 500 x 500 size in the centre of the window
the approximate GIF area rectangle will be shown during the GIF generation
if the model leaves this area during the GIF generation, due to its motion, the process might error out
the larger the model and / or the more colors in the model will affect the size / quality of the resulting GIF file
it disregards the background color but does observe the background image with simple color palette
consider changing Directional Light color and / or using Ambient Light to avoid poor quality GIF for some models
non-animated models will spin 360 degrees
Animated PNG (APNG) exports are powered by UPNG.js and Pako.js
almost the same features as in the Animated GIF export, see above
use some background image to avoid visual anomalies (artifacts) in the resulting file due to transparency:
Eq checkbox to apply equirectangular scene backgroundG button to add grayish linear gradient as a scene backgroundblack.gif or white.gif or dark_blue.png files found in the images folder as a simple choice for background imagecurrently set for full color PNG but can be changed to Lossy PNG to speed up processing (see the comment in the code)
JSON export is actually three.js created format
Try not to change file names when saving files during initial export
Exporting some models might crash the browser when running out of memory
Exporting some models might be easier / better done with multiple viewers, examples:
DAE, GLB, GLTF, JSON, OBJ + MTL, PLY, STL, USDZ modified exporters are three.js based
USDZ exporter tips:
OBJ + MTL exporter and loaders try to take advantage of the THREE.MeshPhysicalMaterial to bring a GLTF alike functionality
OBJ_MTL_PBR.md file for the exported MTL entries descriptionuv1 set alongside uv for aoMap or lightMapOBJ exporter might currently, along with the exported MTL file, export multiple copies of the same texture but under different names:
DAE (Collada) exporter might currently export multiple copies of the same texture but under different names:
<init_from> lines inside the <library_images> section of the DAE file to point to that texturePLY exporter will include vertex colors and will convert material color to vertex color if the material has no texture
GLB_d GLB_dw GLB_m GLB_mw (for regular exports) GLBx_d GLBx_dw GLBx_m GLBx_mw (for alternative exports)KTX2 offers ETC1S + UASTC compression, automatically selected as per specific type of textureKTX2e offers ETC1S only compression applicable to all texturesKTX2u offers UASTC only compression applicable to all texturesOBJx DAEx GLTFx USDZx:
atoms and bonds and labelspbrSpecularGlossiness but would suggest that you use gltf.report insteadButtons, where applicable:
A - animationsD - open desktop version of the viewer (available in mobile viewers only)E - edges
EC - edge colorF - flatShadingf - allows for Y-Flip of DDS textures when present in the model (available in ASSIMP Viewer only)G - linear gradient background
Eq input if presentI - raycasting intersects (available in VTK Viewer only)K - kinematics (available in DAE viewers only)L - lines (LDRAW and its exports in ASSIMP, GLTF, OBJ, JSON viewers)O - opacity (normally enabled with mouse double-click)P - poses (available in MMD viewers only)S - skeleton with demo (available in JSON viewers only)T - optional textures
V - variants that might be present in GLTF models (ASSIMP, GLTF, GLTFS and GM viewers)W - button or Wire checkbox to show wireframeX - morphsY - Y-flip exported textures (mobile GLTF Viewer only) or Y-flip background imageAs - and / or atoms button (available in PDB viewers only)Bs - and / or bonds button (available in PDB viewers only)C0 - camera index
Cam + Index in the GLTF Legacy viewerCS - construction step (available in LDRAW viewers only)DT - material's depthTest switching (ASSIMP, GLTF, GLTFS viewers)Ls - and / or labels button (available in PDB viewers only)MP - material switching - Phong (MP), Standard (MS), Lambert (ML)OL - outline effect (available in MMD viewers only)OS - material side - Original (OS), Front (FS), Back (BS), Double (DS)PM - show model as points (PLY+STL, PRWM and VTK viewers)PP - emissive bloom post processing (GLTF and OBJ+MTL WebGPU desktop viewers)TL - use Texture Loader if SVG Loader fails to load, useful for some SVG images (available in SVG viewers only)VC - vertex colors
! - random vertex colorsXS - xtra smooth (available in OBJ Viewer only)RST - reset# - grid& - change LDRAW parts library location (available in LDRAW Viewer only)Light controls, where applicable:
AL - ambient light color
ALi - ambient light intensityDL - directional light color
DLi - directional light intensityHL - hemisphere light colorSL - spotlight color
SLi - spotlight intensityOther controls, where applicable:
B or BG - background color
G button if enabledEq input if presentC - object or points colorEq - button or checkbox for setting an equirectangular background with additional controls, where applicable:
setEnvMap for setting envMap + metalnesstoneMapping with exposure and envMapIntensitybackBlurriness and backIntensityG button and background color controlJSON viewers support three.js and assimp JS and/or JSON formats with some limitations:
GLTF / FBX / DAE viewers will also include animations to exported JSON format
PDB Viewer is using lil-gui as a passive Atoms Legend display:
labels instead will slow down the rendering when a molecule has a large number of atoms3DS Viewer is using MeshPhysicalMaterial instead of MeshPhongMaterial
Multiple desktop viewers will also try mapping any valid BGND image as equirectangular when Eq is enabled:
BGND file input:
PLY+STL, PRWM and VTK desktop viewers can also:
ASSIMP, GLTF, GLTFS, GLTF WebGPU, OBJ+MTL, PLY+STL, PRWM and VTK desktop viewers are using a modified version of UVUnwrapper to create UVs for the model:
T button to switch between multiple texturesUsing Animated GIF as a texture is experimental and powered by modified gif-loader using omggif library
Currently available only in GLTF, OBJ+STL, PLY+STL, PRWM and VTK desktop viewers and should be tried on simple models
An example of the cube with Animated GIF texture is below
Tips:
background color to whitein/out or apply ScaleVertex Colors
Random Vertex ColorsflatShadingedgesBedroom with 8k images and try it AS ISPLY+STL Viewer
T button to switch between loaded texturesJPEG file with integrated gainmapsEXR and HDR files:
JPEG file with integrated gainmapsJPEG without gainmaps, PNG, BMP, GIF and WEBP texture loadingURLS4MODELS.md file for an examplehttps://ezgif.comOpen With and select Firefox browserThis is all MIT licensed but please observe any other licenses that might be applicable to some files or content.
Any and all trademarks, either directly or indirectly mentioned in this project, belong to their respective owners.