This repo is forked from PrincessGod/objTo3d-tiles.
The main change is function obj23dtiles
will return promise
so you'll know when the call ends.
Node command line tool and module convert obj model file to 3D Tiles, based on obj2gltf.
NOTE: Only support
.b3dm
and.i3dm
for now!Please use Cesium after v1.37, cause this 3d tile use glTF2.0.
Make sure you have Node installed, and then
npm install -g obj23dtilesp
- Convert
.obj
to.gltf
obj23dtilesp -i ./bin/barrel/barrel.obj
// Export barrel.gltf at obj folder.
obj23dtilesp -i ./bin/barrel/barrel.obj -d
// Export barrel.gltf at obj folder, and enable draco compression
- Convert
.obj
to.glb
obj23dtilesp -i ./bin/barrel/barrel.obj -b
// Export barrel.glb at obj folder.
NOTE: More detial to convert
.gltf
and.glb
can find at obj2gltf.
NOTE: If your model have tarnsparency texture please add
--checkTransparency
parameter.
NOTE: If your model using blinn-phong material, and use occlusion when convert to PBR material, the model will looks darker. The
useOcclusion
default is false, remember adding--useOcclusion
if your model using PBR material. Here are some showcase about it.
- Convert
.obj
to.b3dm
with default BatchTable, which havebatchId
andname
property, andname
is model's name.
obj23dtilesp -i ./bin/barrel/barrel.obj --b3dm
// Export barrel.b3dm at obj folder.
- Convert
.obj
to.b3dm
with default BatchTable and export default BatchTable (a JSON file). Maybe get information for custom BatchTable.
obj23dtilesp -i ./bin/barrel/barrel.obj --b3dm --outputBatchTable
// Export barrel.b3dm and barrel_batchTable.json at obj folder.
- Convert
.obj
to.b3dm
with custom BatchTable.
obj23dtilesp -i ./bin/barrel/barrel.obj -c ./bin/barrel/customBatchTable.json --b3dm
// Export barrel.b3dm with custom batch table at obj folder.
- Convert
.obj
to.i3dm
width FeatureTable.
obj23dtilesp -i ./bin/barrel/barrel.obj -f ./bin/barrel/customFeatureTable.json --i3dm
// Export barrel.i3dm at obj folder.
- Convert
.obj
to.i3dm
with FeatureTable and BatchTable.
obj23dtilesp -i ./bin/barrel/barrel.obj -f ./bin/barrel/customFeatureTable.json
-c ./bin/barrel/customI3dmBatchTable.json --i3dm
// Export barrel.i3dm with BatchTable at obj folder.
FeatureTable support following parameters : position
, orientation
, scale
.
- Create a single tileset with
.b3dm
tile.
obj23dtilesp -i ./bin/barrel/barrel.obj --tileset
// Export ./Batchedbarrel folder at obj folder which is a tileset.
- Create a single tileset with
.b3dm
tile and custom tileset options, custom BatchTable.
obj23dtilesp -i ./bin/barrel/barrel.obj --tileset
-p ./bin/barrel/customTilesetOptions.json -c ./bin/barrel/customBatchTable.json
// Export ./Batchedbarrel folder at obj folder which is a tileset with custom tileset options.
- Create a single tileset with
.i3dm
tile.
obj23dtilesp -i ./bin/barrel/barrel.obj --tileset --i3dm
-f ./bin/barrel/customFeatureTable.json
// Export ./Instancedbarrel folder at obj folder which is a tileset.
- Create a single tileset with
.i3dm
tile and custom tileset options, custom BatchTable.
obj23dtilesp -i ./bin/barrel/barrel.obj --tileset --i3dm
-f ./bin/barrel/customFeatureTable.json -p ./bin/barrel/customTilesetOptions.json
-c ./bin/barrel/customI3dmBatchTable.json
// Export ./Instancedbarrel folder at obj folder which is a tileset.
The customTilesetOptions.json
can have options bellow, and these are fake values, please only add properties you need, other value will be auto calculate through .obj
file.
{
"longitude": -1.31968, // Tile origin's(models' point (0,0,0)) longitude in radian.
"latitude": 0.698874, // Tile origin's latitude in radian.
"transHeight": 0.0, // Tile origin's height in meters.
"region": true, // Using region bounding volume.
"box": false, // Using box bounding volume.
"sphere": false // Using sphere bounding volume.
}
NOTE: If you are not specify the
transHeight
option, your model will be place at earth ground surface, which means no matter what the height your models are, the lowerest point of your models will be place atheight = 0.0
on the earth. But if you want keep origin heigth you just need specifytransHeight = 0.0
.
Here are different bounding volumes.
You can combine tilesets into one tileset.json
as external tileset.
obj23dtilesp combine -i ./bin/barrel/output
obj23dtilesp merge -i ./bin/barrel/output
If you want to use this tool in node or debug, check out how to use as node module.
Navigate to this project folder and run
npm run test
First, make sure your .obj
file is complete, normally include .obj
, .mtl
and textures like .jpg
or .png
.
You can preview your .obj
model via "Mixed Reality Viewer" if you are in windows 10.
Otherwise you can use this online viewer.
Second, export .glb
and check if it display correctly. You can use
Cesium or Three.js gltf viewer.
In the end, just export .b3dm
or tileset and load in Cesium.
Sample data under the .bin\barrel\
folder.
barrel\
|
- barrel.blend --
| |- Blender project file with texture.
- barrel.png --
|
- barrel.obj --
| |- Obj model files.
- barrel.mtl --
|
- customBatchTable.json ---- Custom batchtable for b3dm.
|
- customTilesetOptions.json ---- Custom tileset optional parameters.
|
- customFeatureTable.json ---- Custom FeatureTable for i3dm.
|
- customI3dmBatchTable.json ---- Custom BatchTable for i3dm.
|
- output\ ---- Export data by using upper files.
|
- barrel.glb
|
- barrel.gltf
|
- barrel_batchTable.json ---- Default batch table.
|
- Batchedbarrel\ ---- Tileset use b3dm
| |
| - tileset.json
| |
| - barrel.b3dm
|
- Instancedbarrel\ ---- Tileset use i3dm
| |
| - tileset.json
| |
| - barrel.i3dm
|
- BatchedTilesets\ ---- Tileset with custom tileset.json
|
- tileset.json
|
- barrel_withDefaultBatchTable.b3dm
|
- barrel_withCustonBatchTable.b3dm
Great thanks to Sean Lilley(@lilleyse) for helping and advising.
Thanks AnalyticalGraphicsInc provide a lot of open source project (like Cesium and 3D Tiles) and creat a great GIS environment.