Skip to content

Commit 6223e6d

Browse files
committed
Update 4.6.6
1 parent 01b4322 commit 6223e6d

24 files changed

+12525
-426
lines changed

README.md

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ This application is suitable for rapid prototyping, speed modeling, creating sma
2222
**File I/O**
2323
- Save and load JSON
2424
- Import MagicaVoxel VOX
25-
- Export to GLB, GLTF, OBJ, STL
26-
- Local storages, snapshots, quicksave, undo
27-
- Backup and share up to 100 snapshots in a ZIP archive
25+
- Export to GLB, GLTF, OBJ, STL, PLY
26+
- Localstorage, snapshots, quicksave, undo
27+
- Backup and share snapshots in a ZIP archive
2828

2929
**Model and Paint**
3030
- High performance voxel engine
@@ -41,7 +41,7 @@ This application is suitable for rapid prototyping, speed modeling, creating sma
4141

4242
**Voxelization**
4343
- Fast BVH voxelization
44-
- 3D model voxelizer
44+
- Model voxelizer *(GLB, OBJ, STL, PLY)*
4545
- Image voxelizer
4646
- Text voxelizer *(unicode & emoji)*
4747

@@ -111,31 +111,31 @@ python3 update.py
111111
✔️ If WebGPU is supported in your browser, the option to enable it will be available in the Preferences menu.
112112

113113
## Known Issues
114-
Higher than 512K is not recommended
115-
```
116-
Electron is recommended for working with a large number of voxels
117114

118-
Higher values can have the following problems:
119-
- Intolerable delay when starting the renderer
120-
- Chrome tab may freeze or crash
115+
#### Low FPS at higher voxel volumes
116+
> Electron is recommended for working with a large number of voxels.<br>
117+
Also, the FPS depends on many factors, such as the material (CEL is faster) and the distance between the camera and the model. Rendering a dense Thin volume at close range greatly increases GPU load.
118+
>- Use "Minimal UIX" to save battery on mobile devices. (<100 ms startup)
119+
>- Do not enable "Frosted Glass UI"
120+
>- Use XFORM > "Optimize" to reduce the volume of voxels.
121121
122-
Of course, the number of voxels is unlimited,
123-
I have rendered up to 1 million voxels.
124-
```
125-
Failed to import GLB meshes for voxelization
126-
```
127-
Multiple meshes need to have the same properties or they won't merge,
128-
the only solution is to merge meshes before exporting to GLB.
129-
```
130-
Wacom tablet crashes randomly and throws warning on Linux (GNOME)
131-
```
132-
Warning: BJS - Max number of touches exceeded. Ignoring touches in excess of 2.
133-
This problem is related to Babylon.js and nothing can be done.
134-
```
135-
Error: Exceeded the quota
136-
```
137-
Browser storage is limited, use Electron for much higher capacity.
138-
```
122+
#### Delay in drawing strokes
123+
> If you draw and it doesn't, it means the builder is working, you are drawing faster than your hardware and browser will allow. (latency > 150 ms)
124+
125+
#### Error: Exceeded the quota
126+
> Browser storage is limited, use Electron for much higher capacity.
127+
128+
#### Import GLB:
129+
##### Attributes error (voxelization)
130+
> Multiple meshes need to have the same properties or they won't merge, the only solution is to merge meshes before exporting to GLB.
131+
##### Morphtarget error (voxelization)
132+
> We do not support geometry animations.
133+
134+
#### Import PLY: Throw RangeError (voxelization)
135+
> They are often a piece of a larger model data from the Stanford 3D repository.
136+
137+
#### Wacom tablet crashes randomly and throws warning on Chrome (Linux:GNOME)
138+
> Warning: BJS - Max number of touches exceeded. Ignoring touches in excess of 2.<br>This problem is related to Babylon.js and nothing can be done.
139139
140140
## FAQ
141141
How to merge vertices after export to GLB?

media/screenshot.png

-230 Bytes
Loading

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "voxel-builder",
3-
"version": "4.6.5",
3+
"version": "4.6.6",
44
"description": "Voxel-based 3D modeling application",
55
"main": "electron.js",
66
"scripts": {

src/assets/tex_checker.svg

Lines changed: 11 additions & 10 deletions
Loading

src/index.html

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -37,20 +37,20 @@
3737
--scene: #3D4250;
3838
--border-radius: 4px;
3939
--border: solid 1px #00000025;
40-
--menu-bg: #2e3542E1; /* overridden */
40+
--menu-bg: #2e3542DD;
4141
--menu-shadow: #00000040;
42-
--btn-bg: #2b313dBB;
42+
--btn-bg: #2b313dDD;
4343
--btn-bg-shadow: inset 5px 5px 15px #00000050, inset -5px -5px 5px #00000010;
4444
--btn-color: #969fb1;
4545
--btn-color-hover: #444;
4646
--btn-tool-border: solid 1px #4682b4AA;
47-
--input-bg: #00000040;
47+
--input-bg: #21252eCC;
4848
--input-color: #8d98aa;
4949
--input-border-hover: solid 1px #4682b4AA;
5050
--label: #7f8da1;
5151
--label-info: #94a0b1EE;
5252
--label-help: #657183;
53-
--cat-bg: #292e3890;
53+
--cat-bg: #292e38AA;
5454
--cat-color: #69768d;
5555
--cat-border: solid 1px #3e485caa;
5656
--text-shadow: 1px 1px 0 #111;
@@ -165,9 +165,9 @@
165165
#hover .material-icons { font-size: 20px; }
166166
#palette { z-index: 400; display: none; background: #00000008; position: absolute; right: 5px; top: 80px; bottom: 285px; padding-right: 1px; overflow-y: scroll; overflow-x: hidden; }
167167
#meshlist { z-index: 400; display: none; background: #00000008; width: 45px; position: absolute; right: 5px; top: 80px; bottom: 5px; overflow-y: scroll; overflow-x: hidden; }
168-
#meshlist .item_name { background: #3e4558; width: 39px; height: 19px; padding-top: 6px; font-size: 11px; border: var(--border); border-left-width: 2px; border-radius: var(--border-radius); text-align: center; }
169-
#meshlist .item_name:hover { background: var(--btn-bg); color: orange; cursor: pointer; }
170-
#meshlist .item_name.mesh_select { background: var(--btn-bg); color: orange; }
168+
#meshlist .item_name { background: #3D4250DD; width: 39px; height: 19px; padding-top: 6px; margin-bottom: 1px; font-size: 11px; border: var(--border); border-left-width: 2px; border-radius: var(--border-radius); text-align: center; }
169+
#meshlist .item_name:hover { background: var(--btn-bg); color: orange; border-right-color: orange; cursor: pointer; }
170+
#meshlist .item_name.mesh_select { background: var(--btn-bg); color: orange; border-right-color: orange; }
171171
#snapshots { height: auto; max-height: 630px; }
172172
#snapshots li { display: flex; flex-direction: row; gap: 2px; }
173173
#snapshots li img { object-fit: contain; width: 100%; height: 58px; background: #292f3aaa; box-shadow: inset 0 0 10px #25262e80; border-radius: var(--border-radius); overflow: hidden; cursor: pointer; }
@@ -308,7 +308,7 @@
308308
<li class="category">ABOUT</li>
309309
<li class="about">
310310
<div><span style="color: orange">V</span>OXEL BUILDER</div>
311-
&#8627; 4.6.5 BETA
311+
&#8627; 4.6.6 BETA
312312
<br>&#8627; <a href="https://github.com/nimadez/voxel-builder/" target="_blank">GitHub</a>
313313
<br>&#8627; <a href="https://github.com/nimadez/voxel-builder/releases" target="_blank">Changelog</a>
314314
<br>DEVELOPER
@@ -365,6 +365,14 @@
365365
<li class="category">SCENE</li>
366366
<li class="row_color"><label for="pref_background_check">BG</label> <input type="color" id="pref_background_color" value="#151515"> <input type="checkbox" id="pref_background_check" style="width: 57px;"></li>
367367
<li class="row_color" title="General shade color is widely distributed throughout the app."><label>Shade</label><input type="color" id="pref_render_shade" value="#90A0B3"><button style="width: 45px; padding: 2px;" title="Reset" onclick="this.previousElementSibling.value = '#90A0B3'; this.previousElementSibling.dispatchEvent(new Event('input', { bubbles: true }));">R</button></li>
368+
<li class="row">
369+
<label style="margin-right: 7px">Texture</label> <select id="pref_voxel_texture">
370+
<option value="0">None</option>
371+
<option value="1">Grid</option>
372+
<option value="2">Checker</option>
373+
</select>
374+
</li>
375+
<li class="spacer"></li>
368376
<li><input type="checkbox" id="pref_scene_pointcloud"> <label for="pref_scene_pointcloud">Point Cloud</label></li>
369377
<li class="category">SYSTEM</li>
370378
<li><input type="checkbox" id="pref_help_labels"> <label for="pref_help_labels">Show Help Texts</label></li>
@@ -389,7 +397,15 @@
389397
<li><button onclick="document.getElementById('openfile_import_voxels').click()">From JSON</button></li>
390398
<li title="Unbake: Upload exported GLB files only"><button onclick="document.getElementById('openfile_baked_glb').click()">From Baked GLB</button></li>
391399
<li class="category">EXPORT</li>
392-
<li><button id="btn_action_export_voxels">Raw Voxels</button></li>
400+
<li class="row_input">
401+
<label style="width: 60%;">Format</label><select id="input_raw_export_format">
402+
<option value="obj_raw" selected>OBJ</option>
403+
<option value="stl_raw">STL</option>
404+
<option value="ply_raw">PLY</option>
405+
</select>
406+
</li>
407+
<li class="spacer"></li>
408+
<li><button id="btn_action_raw_export">Raw Voxels</button></li>
393409
<li class="category">CAPTURE</li>
394410
<li><button id="btn_action_screenshot">Screenshot</button></li>
395411
</ul>
@@ -473,13 +489,6 @@
473489
<li class="category">MORE</li>
474490
<li><input id="input-pt-autostart" type="checkbox"></input> <label for="input-pt-autostart">Auto Start</label></li>
475491
<li><input id="input-pt-shade" type="checkbox"></input> <label for="input-pt-shade">Shade Mode</label></li>
476-
<li class="row_input">
477-
<label>Texture</label> <select id="input-pt-texture">
478-
<option value="0">None</option>
479-
<option value="1" selected>Grid</option>
480-
<option value="2">Checker</option>
481-
</select>
482-
</li>
483492
<li class="row_input"><label for="input-pt-plane">Plane</label> <input id="input-pt-plane" class="ignorekeys" type="number" value="0" min="0" step="1"></input></li>
484493
</ul>
485494

@@ -488,6 +497,7 @@
488497
<li class="row"><label style="margin-right: 10px">Scale</label><input type="number" class="ignorekeys" id="input-voxelizer-scale" value="50" min="1"></li>
489498
<li class="spacer"></li>
490499
<li><button onclick="document.getElementById('openfile_voxelizer').click()">Upload Model</button></li>
500+
<li><label class="help">? GLB | OBJ | STL | PLY</label></li>
491501
<li class="category">IMAGES</li>
492502
<li class="row"><label style="margin-right: 10px">Ratio</label> <input type="number" class="ignorekeys" id="input-voxelizer-ratio" value="5.0" min="0.1" step="0.1"></li>
493503
<li class="spacer"></li>
@@ -641,6 +651,8 @@
641651
<li><button id="btn_action_bakery_bake_islands">Bake by Islands</button></li>
642652
<li class="spacer"></li>
643653
<li title="Treats the corners as a connected island"><input type="checkbox" id="input-bake-islands-connected" checked> <label for="input-bake-islands-connected">Add Connected</label></li>
654+
<li class="spacer"></li>
655+
<li><button id="btn_tool_bake_color" class="tool tool_bake_color">Bake Color</button></li>
644656
<li class="category">UNBAKE</li>
645657
<li><button id="btn_action_unbake_meshes">Unbake Meshes</button></li>
646658
<li class="category">DELETE<li>
@@ -650,14 +662,6 @@
650662
</ul>
651663

652664
<ul class="menu panel" id="menu-pbr">
653-
<li class="category">TEXTURE</li>
654-
<li class="row_input">
655-
<select id="input-pbr-texture">
656-
<option value="0">None</option>
657-
<option value="1">Grid</option>
658-
<option value="2" selected>Checker</option>
659-
</select>
660-
</li>
661665
<li class="category">COLORS</li>
662666
<li class="row_color"><label>Vertex</label> <input type="color" id="input-pbr-vertexcolor" value="#CCCCCC"></li>
663667
<li class="row_color"><label>Albedo</label> <input type="color" id="input-pbr-albedo" value="#CCCCCC"></li>
@@ -672,17 +676,19 @@
672676
</ul>
673677

674678
<ul class="menu panel" id="menu-export">
675-
<li class="category">EXPORT</li>
679+
<li class="category">EXPORT BAKES</li>
676680
<li class="row_input">
677-
<label style="width: 60%;">Format</label><select id="export_format">
681+
<label style="width: 60%;">Format</label><select id="input_export_format">
678682
<option value="glb">GLB</option>
679683
<option value="gltf">glTF</option>
680684
<option value="obj">OBJ</option>
681685
<option value="stl">STL</option>
686+
<option value="ply">PLY</option>
682687
</select>
683688
</li>
684689
<li class="spacer"></li>
685690
<li><input type="checkbox" id="export_selected_bake"> <label for="export_selected_bake">Selected Mesh</label></li>
691+
<li><input type="checkbox" id="export_texture" checked disabled> <label for="export_texture">Export Texture</label></li>
686692
<li class="spacer"></li>
687693
<li><button id="btn_action_export_meshes">Export Meshes</button></li>
688694
<li><label class="help">? Keeping the exported GLB file means you have the voxel data. see File menu, "From Baked GLB"</label></li>
@@ -774,7 +780,7 @@
774780
<input style="display: none" type="file" id="openfile_json" accept=".json,.vbx" onclick="this.value = null">
775781
<input style="display: none" type="file" id="openfile_import_voxels" accept=".json" onclick="this.value = null">
776782
<input style="display: none" type="file" id="openfile_vox" accept=".vox" onclick="this.value = null">
777-
<input style="display: none" type="file" id="openfile_voxelizer" accept=".obj,.glb" onclick="this.value = null">
783+
<input style="display: none" type="file" id="openfile_voxelizer" accept=".obj,.glb,.stl,.ply" onclick="this.value = null">
778784
<input style="display: none" type="file" id="openfile_voxelizer_img" accept=".jpg,.png,.svg" onclick="this.value = null">
779785
<input style="display: none" type="file" id="openfile_hdr" accept=".hdr" onclick="this.value = null">
780786
<input style="display: none" type="file" id="openfile_baked_glb" accept=".glb" onclick="this.value = null">
@@ -814,8 +820,6 @@
814820

815821
<script src="libs/babylon.js"></script>
816822
<script src="libs/babylonjs.materials.min.js"></script>
817-
<script src="libs/babylonjs.loaders.min.js"></script>
818-
<script src="libs/babylonjs.serializers.min.js"></script>
819823
<script src="libs/babylon.inspector.bundle.js"></script>
820824
<script type="importmap">
821825
{

0 commit comments

Comments
 (0)