|
37 | 37 | --scene: #3D4250; |
38 | 38 | --border-radius: 4px; |
39 | 39 | --border: solid 1px #00000025; |
40 | | - --menu-bg: #2e3542E1; /* overridden */ |
| 40 | + --menu-bg: #2e3542DD; |
41 | 41 | --menu-shadow: #00000040; |
42 | | - --btn-bg: #2b313dBB; |
| 42 | + --btn-bg: #2b313dDD; |
43 | 43 | --btn-bg-shadow: inset 5px 5px 15px #00000050, inset -5px -5px 5px #00000010; |
44 | 44 | --btn-color: #969fb1; |
45 | 45 | --btn-color-hover: #444; |
46 | 46 | --btn-tool-border: solid 1px #4682b4AA; |
47 | | - --input-bg: #00000040; |
| 47 | + --input-bg: #21252eCC; |
48 | 48 | --input-color: #8d98aa; |
49 | 49 | --input-border-hover: solid 1px #4682b4AA; |
50 | 50 | --label: #7f8da1; |
51 | 51 | --label-info: #94a0b1EE; |
52 | 52 | --label-help: #657183; |
53 | | - --cat-bg: #292e3890; |
| 53 | + --cat-bg: #292e38AA; |
54 | 54 | --cat-color: #69768d; |
55 | 55 | --cat-border: solid 1px #3e485caa; |
56 | 56 | --text-shadow: 1px 1px 0 #111; |
|
165 | 165 | #hover .material-icons { font-size: 20px; } |
166 | 166 | #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; } |
167 | 167 | #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; } |
171 | 171 | #snapshots { height: auto; max-height: 630px; } |
172 | 172 | #snapshots li { display: flex; flex-direction: row; gap: 2px; } |
173 | 173 | #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 | 308 | <li class="category">ABOUT</li> |
309 | 309 | <li class="about"> |
310 | 310 | <div><span style="color: orange">V</span>OXEL BUILDER</div> |
311 | | - ↳ 4.6.5 BETA |
| 311 | + ↳ 4.6.6 BETA |
312 | 312 | <br>↳ <a href="https://github.com/nimadez/voxel-builder/" target="_blank">GitHub</a> |
313 | 313 | <br>↳ <a href="https://github.com/nimadez/voxel-builder/releases" target="_blank">Changelog</a> |
314 | 314 | <br>DEVELOPER |
|
365 | 365 | <li class="category">SCENE</li> |
366 | 366 | <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> |
367 | 367 | <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> |
368 | 376 | <li><input type="checkbox" id="pref_scene_pointcloud"> <label for="pref_scene_pointcloud">Point Cloud</label></li> |
369 | 377 | <li class="category">SYSTEM</li> |
370 | 378 | <li><input type="checkbox" id="pref_help_labels"> <label for="pref_help_labels">Show Help Texts</label></li> |
|
389 | 397 | <li><button onclick="document.getElementById('openfile_import_voxels').click()">From JSON</button></li> |
390 | 398 | <li title="Unbake: Upload exported GLB files only"><button onclick="document.getElementById('openfile_baked_glb').click()">From Baked GLB</button></li> |
391 | 399 | <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> |
393 | 409 | <li class="category">CAPTURE</li> |
394 | 410 | <li><button id="btn_action_screenshot">Screenshot</button></li> |
395 | 411 | </ul> |
|
473 | 489 | <li class="category">MORE</li> |
474 | 490 | <li><input id="input-pt-autostart" type="checkbox"></input> <label for="input-pt-autostart">Auto Start</label></li> |
475 | 491 | <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> |
483 | 492 | <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> |
484 | 493 | </ul> |
485 | 494 |
|
|
488 | 497 | <li class="row"><label style="margin-right: 10px">Scale</label><input type="number" class="ignorekeys" id="input-voxelizer-scale" value="50" min="1"></li> |
489 | 498 | <li class="spacer"></li> |
490 | 499 | <li><button onclick="document.getElementById('openfile_voxelizer').click()">Upload Model</button></li> |
| 500 | + <li><label class="help">? GLB | OBJ | STL | PLY</label></li> |
491 | 501 | <li class="category">IMAGES</li> |
492 | 502 | <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> |
493 | 503 | <li class="spacer"></li> |
|
641 | 651 | <li><button id="btn_action_bakery_bake_islands">Bake by Islands</button></li> |
642 | 652 | <li class="spacer"></li> |
643 | 653 | <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> |
644 | 656 | <li class="category">UNBAKE</li> |
645 | 657 | <li><button id="btn_action_unbake_meshes">Unbake Meshes</button></li> |
646 | 658 | <li class="category">DELETE<li> |
|
650 | 662 | </ul> |
651 | 663 |
|
652 | 664 | <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> |
661 | 665 | <li class="category">COLORS</li> |
662 | 666 | <li class="row_color"><label>Vertex</label> <input type="color" id="input-pbr-vertexcolor" value="#CCCCCC"></li> |
663 | 667 | <li class="row_color"><label>Albedo</label> <input type="color" id="input-pbr-albedo" value="#CCCCCC"></li> |
|
672 | 676 | </ul> |
673 | 677 |
|
674 | 678 | <ul class="menu panel" id="menu-export"> |
675 | | - <li class="category">EXPORT</li> |
| 679 | + <li class="category">EXPORT BAKES</li> |
676 | 680 | <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"> |
678 | 682 | <option value="glb">GLB</option> |
679 | 683 | <option value="gltf">glTF</option> |
680 | 684 | <option value="obj">OBJ</option> |
681 | 685 | <option value="stl">STL</option> |
| 686 | + <option value="ply">PLY</option> |
682 | 687 | </select> |
683 | 688 | </li> |
684 | 689 | <li class="spacer"></li> |
685 | 690 | <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> |
686 | 692 | <li class="spacer"></li> |
687 | 693 | <li><button id="btn_action_export_meshes">Export Meshes</button></li> |
688 | 694 | <li><label class="help">? Keeping the exported GLB file means you have the voxel data. see File menu, "From Baked GLB"</label></li> |
|
774 | 780 | <input style="display: none" type="file" id="openfile_json" accept=".json,.vbx" onclick="this.value = null"> |
775 | 781 | <input style="display: none" type="file" id="openfile_import_voxels" accept=".json" onclick="this.value = null"> |
776 | 782 | <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"> |
778 | 784 | <input style="display: none" type="file" id="openfile_voxelizer_img" accept=".jpg,.png,.svg" onclick="this.value = null"> |
779 | 785 | <input style="display: none" type="file" id="openfile_hdr" accept=".hdr" onclick="this.value = null"> |
780 | 786 | <input style="display: none" type="file" id="openfile_baked_glb" accept=".glb" onclick="this.value = null"> |
|
814 | 820 |
|
815 | 821 | <script src="libs/babylon.js"></script> |
816 | 822 | <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> |
819 | 823 | <script src="libs/babylon.inspector.bundle.js"></script> |
820 | 824 | <script type="importmap"> |
821 | 825 | { |
|
0 commit comments