Advertisement
Guest User

Model Extractor

a guest
Mar 26th, 2025
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // remove existing download container (if re-running)
  2. const element = document.getElementById('DOWNLOADS_CONTAINER');
  3. if(element) element.remove();
  4.  
  5. // make container for download links
  6. const downloadsContainer = document.body.appendChild(document.createElement('div'));
  7. downloadsContainer.id = "DOWNLOADS_CONTAINER";
  8. downloadsContainer.style.background = 'white';
  9. downloadsContainer.style.padding = '1rem';
  10. downloadsContainer.style.display = 'flex';
  11. downloadsContainer.style.flexDirection = 'column';
  12. downloadsContainer.style.position = 'absolute';
  13. downloadsContainer.style.zIndex = 1000;
  14.  
  15.  
  16.  
  17. const makeModelOBJDownload = (meshId, fileName, downloadText) => {
  18.     const mesh = meshManager.getMeshById(meshId);
  19.  
  20.     let objData = '';
  21.  
  22.     for(var i = 0; i < mesh.verts.length; i += 3) {
  23.         objData += `v ${mesh.verts[i]} ${mesh.verts[i + 1]} ${mesh.verts[i + 2]}\n`;
  24.     }
  25.  
  26.     for(var i = 0; i < mesh.origNormals.length; i += 3) {
  27.         objData += `vn ${mesh.origNormals[i]} ${mesh.origNormals[i + 1]} ${mesh.origNormals[i + 2]}\n`;
  28.     }
  29.  
  30.     for(var i = 0; i < mesh.origIdx.length; i += 3) {
  31.         objData += `f ${mesh.origIdx[i]+1} ${mesh.origIdx[i + 1]+1} ${mesh.origIdx[i + 2]+1}\n`;
  32.     }
  33.  
  34.     const aObj = downloadsContainer.appendChild(document.createElement('a'));
  35.     aObj.download = fileName;
  36.     aObj.href = `data:text/plain;charset=utf-8,${encodeURIComponent(objData)}`;
  37.     aObj.innerHTML = downloadText;
  38. }
  39.  
  40.  
  41. // make downloads for teeth
  42. for(var toothNumber of project.visualSetups[0].teeth) {
  43.     const meshId = project.visualSetups[0].teethMeshesId[toothNumber];
  44.     makeModelOBJDownload(
  45.         meshId,
  46.         `tooth${toothNumber}.obj`,
  47.         `Download OBJ tooth ${toothNumber}`,
  48.     );
  49. }
  50.  
  51. // make download for upper jaw
  52. makeModelOBJDownload(
  53.     project.visualSetups[0].upperJawMeshId,
  54.     `upperJaw.obj`,
  55.     `Download OBJ upper jaw`,
  56. );
  57.  
  58. // make download for lower jaw
  59. makeModelOBJDownload(
  60.     project.visualSetups[0].lowerJawMeshId,
  61.     `lowerJaw.obj`,
  62.     `Download OBJ lower jaw`,
  63. );
  64.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement