.. _Como_Funciona: OrtogOnBlender - O que é e Aspectos Técnicos ============================================ ------------------------- O que é o OrtogOnBlender? ------------------------- .. figure:: images/20190716_2.png :align: center O OrtogOnBlender é um *add-on* para o ensino do planejamento de cirurgia ortognática digital criado por `Cicero Moraes `_, Dr. `Everton da Rosa `_ e Dr. `Rodrigo Dornelles `_. .. warning:: O OrtogOnBlender e demais módulos não são softwares de diagnóstico e uso clínico, mas ferramentas didáticas de ensino de planejamento cirúrgico. **A utilização dos mesmos para qualquer fim é de inteira responsabilidade do usuário**. Como o próprio nome lembra, o mesmo funciona sob Blender e é escrito na linguagem de programação Python. Ele roda no Windows, no Linux e no Mac OS X e é fácil de instalar. O *add-on* trata-se um conjunto de comandos sequenciais que foram organizados e programados de modo a facilitar o planejamento de cirurgia ortognática, fornecendo ao especialista não apenas as soluções encontradas nativamente no Blender, mas se comunicando com programas externos que ampliam as potencialidades do mesmo. É desenvolvido com software e licença livres, mas pode trabalhar em conjunto com ferramentas fechadas e proprietárias, como software de fotogrametria e *scanners* intraorais. -------------------------------- Aspectos Técnicos Pormenorizados -------------------------------- Abaixo serão apresentadas as seções do OrtogOnBlender e a função dos comandos principais de cada uma. .. _Upgrade_Script: Upgrade Script -------------- O campo de atualização de script apresenta a versão atual do OrtogOnBlender. Quando temos o código **VERSION: 20190710c**, por exemplo, significa que a última programação ocorreu no ano de 2019, no mês de julho e no dia 10, sendo a terceira vez, pela letra "c", que o diretório foi enviado ao servidor. Assim que o usuário clica no botão **UPGRADE ORTOG** o addon é atualizado e o programa encerrado para que possa ser aberto novamente já com a última versão. .. _Patients_Name: Patient's Name -------------- No campo **Name:** coloca-se o primeiro nome do paciente e no **Surname:** o sobrenome ou sobrenomes principais. Se o usuário colocar Name: John e Surname: Simpson, por exemplo, resultará no diretório: **John_Simpson**. Se necessário colocar mais informação, é pedido que se complemente junto a um sinal de underline ( _ ), como por exemplo: Name: John, Surname: Simpson_Rivera. No caso de trabalhos com o mesmo paciente em datas diferentes, é possível complementar o sobrenome com a data, seguindo o exemplo do nome do upgrade. Se o paciente John Simpson fora tratado em julho de 2019 o preenchimento fica assim: Name: John, Surname: Simpson_201907. O endereço do diretório depende do sistema operacional. Imaginando que o nome do usuário seja NoteOffice e o do paciente John Simpson, temos as seguintes situações: No **Windows**: .. code-block:: bat C:/Users/NoteOffice/OrtogOnBlenderDir/John_Simpson/ No **Mac OS X**: .. code-block:: bat /Users/NoteOffice/OrtogOnBlenderDir/John_Simpson/ No **Linux**: .. code-block:: bat /home/NoteOffice/OrtogOnBlenderDir/John_Simpson/ O primeiro arquivo criado será o **Base-John_Simpson.blend**, que neste caso ficaria assim: *~/OrtogOnBlenderDir/John_Simpson/Base-John_Simpson.blend* (onde o sinal **~** representa o diretório do usuário). .. warning:: Evite o uso de caracteres especiais como "ç, ś, á, $" e espaço. Isso pode causar problemas em alguma biblioteca utilizada pelo OrtogOnBlender. CT-Scan Reconstruction ---------------------- Esta seção conta com 4 predefinições: * **MANUAL**: O usuário configura manualmente o passo-a-passo da reconstrução. * **VOXEL**: Permite a visualização do *voxel data*, ou seja, a volumetria da tomografia sem a malha 3D (*3D mesh*). * **AUTOMATIC**: Reconstrói a tomografia automaticamente sem a necessidade de configuração passo-a-passo. * **CUSTOM**: Permite uma reconstrução totalmente customizada de apenas uma malha. .. important:: A reconstrução de tomografias computadorizadas diretamente de arquivos DICOM só é possível graças ao software `DicomToMesh `_, desenvolvido por **Adrian Schneider**. A ele e toda a equipe do `AOT AG `_ são direcionados efusivos agradecimentos! Para uma maior compreensão das seções, seguem abaixo as suas descrições pormenorizadas. Manual ~~~~~~ Em **CT-Scan Preparing** o usuário seleciona o diretório onde estão os arquivos DICOM e clica em **Organize** para o sistema copiar os arquivos e organizar em diretórios correspondentes ao SeriesNumber da tomografia. Assim que a tomografia for copiada e organizada o sistema abrirá o LibreOffice com uma planilha descrevendo o número do diretório, o número de arquivos dentro do diretório e a descrição do mesmo. Caso o LibreOffice não esteja presente no sistema operacional os dados podem ser visualizados no terminal (prompt). .. tip:: Procure escolher os diretórios cujo a descrição seja compatível com o tecido mole: "**MOLE**", "**PM**", "**BLANDAS**", "**SOFT TISSUE**", etc. Deste modo é muito provável que não seja necessário alterar os fatores padronizados: **200**, **-300** e **1430**. .. warning:: No caso de arquivo DICOM (.DCM) único o usuário precisará abrí-lo no Slicer e exportá-lo como fatias. Para tal, basta seguir este tutorial: https://www.youtube.com/watch?v=5X2xJqlEiOo. Em **Threshold Setup** o usuário indica um diretório criado no processo anterior e em seguida clica em **Open Slicer!** de modo a abrir o `Slicer `_ e capturar os valores da escala Hounsfield. .. figure:: images/20191203_1.png :align: center Editor de texto aberto automaticamente após o usuário clicar no botão **Convert DICOM to 3D**. Em **CT-Scan Reconstruction** o usuário pode selecionar o diretório onde se encontram os arquivos DICOM e clicar em **Convert DICOM to 3D** para proceder com a reconstrução. .. tip:: Assim que o botão é clicado o OrtogOnBlender abre um arquivo de texto com os dados do tomógrafo. Estes dados podem ser enviados ao banco de dados de tomógrafos do sistema, de modo a fazer as próximas reconstruções automaticamente. Os parâmetros **Bone Factor** (Fator Ossos), **Soft Factor** (Fator Mole) e **Teeth Factor** (Fator Dentes) contém um valor pré definido da escala Hounsfield, que funciona em grande parte dos casos. Por padrão está setado em 200, -300 e 1430, números que funcionam na maioria das tomografias helocoidais. Ao clicar em **Save** será gerado o seguinte arquivo: **CT_Scan-John_Simpson.blend**. .. warning:: Esta seção pode ser substituída pela reconstrução automática oferecida no **CT-Scan Auto 3D Reconstruction**. No entanto, para que o processo automático funcione é necessário que o tomógrafo seja cadastrado no banco de dados do OrtogOnBlender. VOXEL ~~~~~ .. figure:: images/20190712_5.png :align: center Import DICOM Slices com boolean na parte inferior para ver os detalhes internos. O usuário pode importar as fatias da tomografia em forma de um *voxel data*, basta setar o local onde se encontra a tomografia no ícone de diretório e em seguida clicar em **Import DICOM Slices**. .. figure:: images/20190712_6.png :align: center CT-Scan IMG Slices. Ao importar o *voxel* o usuário tem à sua disposição a possibilidade de visualizar as fatias do mesmo. Basta ir na aba Rendering, habilitar o painel direito (N) e clicar em **Import CT-Scan IMG Slices** (no Ortog). Ao fazer isso serão apresentadas algumas informações sobre a tomografia: * **IMGPathSeq**: Local onde se encontra a sequência das imagens. * **SliceThickness**: Espaço (em milímetros) entre as fatias. * **PixelSpacingX**: Valor de um pixel em X (em milímetros). * **PixelSpacingY**: Valor de um pixel em Y (em milímetros). * **IMGDimX**: Dimensão (em pixels) da imagem em X. * **IMGDimY**: Dimensão (em pixels) da imagem em Y. Há ainda a possibilidade do usuário editar e criar uma nova sequência de arquivos DICOM. Basta fazer as alterações, salvar uma por uma das imagens alteradas (Alt+S) e clicar em **Export DICOM Slices**. Ao clicar em **Save** será gerado o seguinte arquivo: **Voxel-John_Simpson.blend**. AUTOMATIC ~~~~~~~~~ .. figure:: images/20190715_2.png :align: center Reconstruções perfiladas: Mole, Ossos e Dentes. Os desenvolvedores estão cadastrando tomógrafos de modo a fazer a reconstrução automaticamente sem a intervenção do usuário. Assim que o cadastro é feito basta setar a localização do diretório com os DICOMs e clicar em **AUTOMATIC DICOM TO 3D**, que o programa se encarrega de organizar, escolher o diretório, corrigir as eventuais incompatibilidades e reconstruir a tomografia em 3D. Ao reconstruir automaticamente a tomografia o sistema cria um diretório chamado **CT-Scan** dentro da pasta do paciente: Nela se encontrarão as fatias DICOM utilizadas no processo, permitindo que o usuário possa utilizá-las posteriormente, caso necessário, sem precisar lançar mão do DVD geralmente fornecido pela clínica ou mesmo os gigantescos arquivos disponíveis de modo online. Ao clicar em **Save** será gerado o seguinte arquivo: **CT_Scan_Auto-John_Simpson.blend**. CUSTOM ~~~~~~ A seção **CUSTOM** tem o funcionamento muito parecido com o **MANUAL**. Primeiro o usuário organiza a tomografia, em seguida abre o diretório desejado e testa o fator no Slicer. A diferença de abordagem é na última parte, onde apenas uma malha pode ser reconstruída por vez: #. Em **CT-Scan 3D Reconstruction** o usuário informa o diretório da sequência pretendida. #. Em **Reconst. Factor** informa o valor da escala Hounsfield. #. Em **Decimate Factor** informa o fator de simplificação que vai de 0 a 1, onde 0 é sem simplificação e 1 simplificação total. #. Em **Object Name** o usuário informa o nome da malha que será gerada. #. Ao informar todos os dados basta clicar em **Convert DICOM to 3D** e aguardar a reconstrução. .. tip:: O usuário pode reconstruir o número de malhas que necessitar, alterando o fator a cada peça criada. Essa técnica é muito útil para reconstruções como a ATM, por exemplo. Neste caso se reconstrói o osso geral mais grosso (menor fator), em seguida um osso mais fino (maior fator) e ao final isola-se a área de interesse extraindo a região mais grossa com o booleana **Difference** e unindo as peças com a booleana **Union**. Ao clicar em **Save** será gerado o seguinte arquivo: **CT_Scan-John_Simpson.blend**. Graphic References ------------------ Em **Mode** o usuário pode escolher posicionar o cursor ou selecionar objetos. Na seção **Frankfurt Alignment** o usuário pode alinhar o crânio segundo esse protocolo. Para isso, basta: #. Ocultar a face advinda da tomografia clicando em **Hide Face (CT-Scan)**. #. Selecionar **Cursor** em Mode, clicar no ponto do crânio correspondente à órbita direita e em seguida clicar no botão **Orbital right**. #. Repetir o processo com os pontos: **Orbital left**, **N point** e **Po left**. #. Depois que todos os pontos estiverem posicionados, clicar em **Align!** e o crânio será alinhado ao plano de Frankfurt. .. warning:: O alinhamento só funciona se o crânio for nomeado como **Bones**, como acontece quando a tomografia é importada. Em **Reference Lines** o usuário tem a sua disposição uma série de linhas de referência pré-configuradas: * **Vertical Center Line**: Cria uma linha central (olhando pela frente) no sentido vertical. * **Horizontal Center Line**: Cria uma linha central (olhando pela frente) no sentido horizontal. * **Horizontal Side Line**: Cria uma linha pela lateral (olhando pela direita) no sentido horizontal. De modo a não poluir a visualização dos dados os pontos anatômicos podem ser ocultos pelo botão **Hide Anatomical Points**. Assim que as linhas são posicionadas e o crânio alinhado o usuário poderá então desparentear o mole o os dentes dos ossos importado nas seções anteriores, clicando no botão **UNGROUP!!!**. Ao clicar em **Save** será gerado o seguinte arquivo: **Ref-John_Simpson.blend**. .. warning:: É muito importante desparentear o mole dos ossos, caso contrário o *addon* apresentará erro ao acionar posteriormente a dinâmica do mole, rotacionando o rosto de modo incompatível com o crânio. Import Archs ------------ Archs Teeth Import ~~~~~~~~~~~~~~~~~~ A seção **Import Archs** permite ao usuário importar também as tomografias das arcadas dentárias, tanto a réplica em gesso quando o molde, que pode ser convertido em positivo através da inversão dos *normals*. Para reconstruir o DICOM relacionado a arcada o usuário deverá: #. Inidicar o local onde os slices estão presentes. #. Indicar o fator de reconstrução (escala Hounsfield). #. Caso haja dúvida em relação ao fator, pode-se abrir o Slicer em **Open Slicer** de modo a testá-lo. #. Por fim basta indicar o diretório e clicar em **Archs Generator** e aguardar a reconstrução da malha. Se a arcada foi gerada em um software externo, ou mesmo por um *scanner* intraoral, basta importar os modelos através do botão **Import STL**. É quase certo que as arcadas venham desalinhadas com os dentes reconstruídos a partir da tomografia, em face disso será necessário que o usuário alinhe as arcadas com a tomografia. Assim que os moldes forem alinhados ao crânio, o usuário precisará segmentar a região de interesse dos mesmos. Aligment ~~~~~~~~ Ao importar os arcos superior e inferior, o usuário precisará alinhá-los a tomografia reconstruída. Para isso ele recorerrá a seção **Aligment**: #. Selecione o objeto que será alinhado. #. Coloque o ponto de ancoragem no objeto de ORIGEM por primeiro: **Point 1a - Origin**. #. Coloque o ponto de ancoragem no objeto selecionado na sequência: **Point 1b - Align**. #. Repita a operação com os pontos: **Point 2a - Origin** e **Point 2b - Align**. #. Repita a operação com os pontos: **Point 3a - Origin** e **Point 3b - Align**. #. Assim que todos estiverem posicionados clique em **ALIGN!**. #. Se necessário um alinhamento com maior precisão, use o botão **Force ICP Align (Slow)**. .. warning:: Muita atenção, temos dois objetos, o de **origem**, que é aquele que já está alinhado e o de **alinhamento** que é o que deverá ser selecionado antes de se fazer o procedimento. .. important:: O alinhamento via ICP foi viabilizado graças ao *add-on* `object_alignment `_ desenvolvido por **Patrick Ryan Moore** (patmo141). Segmentation ~~~~~~~~~~~~ Na seção **Segmentation** o usuário: #. Fecha o modelos se o mesmo estiver aberto (**Close Holes (Remesh)?**). #. Seleciona o objeto a ser cortado. #. Clica em **Draw Line** e desenha a região a ser cortada. #. Apagar a área desejada: .. figure:: images/20190712_2.png :align: center Exemplo de Subtract IN. * Caso deseje apagar o que está dentro da região clique em **Subtract IN**. .. figure:: images/20190712_3.png :align: center Exemplo de Subtract OUT. * Caso deseje apagar o que está fora da região, clique em **Subtract OUT**. Pode ser necessário segmentar a mandíbula. Para tal o usuário deve: #. Selecionar o crânio e clicar em **Edit Mode Clean** para entrar em modo de edição sem nenhum *vertex* selecionado. #. Selecionar o vértice inicial e clicar em **Sel. More**, automaticamente uma leva de vértices vizinhos serão selecionados e o comando pode ser ativado até que a área de seleção satisfaça a região pretendida, no caso a mandíbula. Caso o usuário selecione vértices demais e ultrapasse a região desejada, ele pode retroceder a seleção clicando em **Sel. Less**. #. Assim que a parte desejada é selecionada, basta clicar en **Separate Selected!** e o sistema se encarrega de separar a região, sair do modo de edição e ainda deixar selecionado apenas o objeto correspondente a seleção efetuada pelo usuário. #. Depois de segmentar as regiões de interesse dos modelos (dentes), crânio e mandíbula pode-se juntá-las com a booleana **Union**. #. Há ainda a possibilidade de trocar o pivô de rotação, em **Pivot Rotation**, caso o usuário deseje testar a rotação de uma mandíbula segmentada. Reconstruction ~~~~~~~~~~~~~~ No caso de correção de buracos simples nas malhas (buracos de casca), basta selecionar o objeto desejado e clicar em **Close All Holes**. O OrtogOnBlender oferece a possibilidade de reconstruir a malha pelo algoritmo Poisson através do botão **Poisson Reconstruction**. A ferramenta é útil nos casos em que o corte por boolean e o fechamento de buracos se mostrarem ineficientes. Ao clicar em **Save** será gerado o seguinte arquivo: **Arch-John_Simpson.blend**. Segmentation ------------ O **Segmentation** concentra ferramentas de segmentações gerais e específicas. .. figure:: images/20190712_1.png :align: center Separated Linked: Objeto original com o cursor posicionado (esquerda) e objeto resultante (direita). Se o usuário desejar separar uma região com vértices ligados, como por exemplo o crânio em relação a ruídos reconstruídos no processo, ele pode posicionar o cursor sobre a área de interesse clicando nela e em seguida em **Separated Linked**, ao final sobrará apenas a malha onde os vértices estejam ligados por edges e faces. No caso de correção de buracos simples nas malhas (buracos de casca), basta selecionar o objeto desejado e clicar em **Close All Holes**. Em **Boolean Segmentation** o usuário pode fazer um desenho de corte no botão **Draw Line** e escolher se deseja apagar a área dentro do desenho (**Subtract IN**) ou fora dele (**Subtract OUT**). Boolean ~~~~~~~ Os cálculos booleanos são ferramentas imprescindíveis para o planejamento cirúrgico, tanto pela sua importância na geração de osteotomias quanto na criação de *splints* e guias. As ferramentas oferecidas pelo OrtogOnBlender são umas das mais robustas disponíveis na computação gráfica 3D para as ciências da saúde. .. figure:: images/20190713_1.png :align: center Exemplos de cálculos booleanos. * **Difference**: Calcula Objeto 1 - Objeto 2 (A-B) ou Objeto 2 - Objeto 1 (B-A). * **Union**: Unifica A+B ou B+A. * **Intersect**: Gera um malha da intersecção de A e B. * **MULTIPLE UNION**: Unifica malhas sem limite de objetos: A+B+C+D+E... .. important:: As poderosas ferramentas de *boolean* foram viabilizadas graças à biblioteca `Cork `_ desenvolvida por **Gilbert Bernstein** (gilbo). Surface Cut ~~~~~~~~~~~ Permite ao usuário fazer cortes sobre a casca da malha. Para efetuar um corte: #. Selecione o objeto a ser cortado. #. Clique em **Create Points** e vá clicando sobre a região que pretende cortar. Assim que finalizar o desenho clique no botão direito do mouse ou no **ESC**. #. Para ver a linha de corte clique em **Create Bezier Line** e edite a linha se necessário. #. Se desejar fazer um corte simples, clique em **Cut Line!** #. Se desejar fazer um corte duplo e mais seguro, clique em **Cut Line Double**. Teeth Segmentation Tube ~~~~~~~~~~~~~~~~~~~~~~~ Esta seção corta os dentes utilizando linhas que se convertem em finos tubos, cujo o diâmetro será a base de corte por intersecção. Para tal o usuário deverá: #. Selecionar o modelo, clicar em **Create Points** e criar os pontos correspondentes a linha. #. Depois de criar os pontos, clicar em **ESC** e posteriormente em **Create Bezier Tube**. #. Em seguida basta clicar em **Cut Line Teeth!** Teeth Segmentation Line ~~~~~~~~~~~~~~~~~~~~~~~ Esta seção corta os dentes diretamente na malha em Edit Mode, utilizando a ferramenta **Knife**. Para tal o usuário deverá: #. Selecionar o modelo e clicar em **Prepare Mesh to Cut**. #. Clicar em **Knife Cut** e fazer os cortes necessários de modo que o ponto inicial seja também o final (**loop**). Assim que finalizar, clicar em **Enter**. #. Clicar em **Edge Split Separation**. Separated Teeth ~~~~~~~~~~~~~~~ Para utilizar esta seção o usuário precisará setar um dos fatores da escala Hounsfield para o valor de separação da região do côndilo, que geralmente é **655**. Assim que a tomografia for reconstruída: #. Deixar visível apenas o objeto do fator 655 e pintar a parte externa com **Weight Paint 1** e se necessário, usar o **Weight Paint 0** que exclui o peso do local. #. Apague o peso 0 no botão **Delete Blue**. #. Clique em **Separate Skull-Mandible** para separar a mandíbula do crânio. .. tip:: Estas ferramentas também servem para selecionar e desselecionar faces, além de permitir apagar também a parte com peso 1 (vermelha), muito útil no isolamento de objetos externos (faces) ou internos (seios nasais, vias respiratórias e afins). .. warning:: No Blender 2.80 a ferramenta de pintura de peso está selecionando objetos ocultos e isso causa um erro no **Separate Skull-Mandible**. No lugar de usar o Weight Paint, entre em Modo de Edição e pinte a área desejada com o **C** e com a visualização **Solid** ativa. Inverta a seleção com **CTRL+I** e apague as faces. Teeth Touched ~~~~~~~~~~~~~ Em face da dificuldade da separação da mandíbula, principalmente em casos onde os dentes se tocam, o OrtogOnBlender passou a oferecer uma solução que facilita a segmentação desta peça anatômica de modo semi automático. .. figure:: images/20190713_2.png :align: center Pontos anatômicos posicionados (à esquerda) e mandíbula separada com o **Mandible Segmentation** (à direita). Como proceder com a segmentação: #. Posicione todos os pontos anatômicos disponíveis na seção. #. Clique em **Mandible Segmentation**. #. Se necessário, apague as regiões que vieram a mais e então clique em **Separate Skull from Mandible**. Other Tools ~~~~~~~~~~~ No caso de correção de buracos simples nas malhas (buracos de casca), basta selecionar o objeto desejado e clicar em **Close All Holes**. O OrtogOnBlender oferece a possibilidade de reconstruir a malha pelo algoritmo Poisson através do botão **Poisson Reconstruction**. A ferramenta é útil nos casos em que o corte por boolean e o fechamento de buracos se mostrarem ineficientes. Os seguintes botões oferecem a possibilidade de cortar um objeto de fora-a-fora sem fechá-lo, como no caso do **Boolean Segmentation**: #. Selecione o objeto a ser cortado. #. Clique em **Draw Line** para desenhar uma linha. #. Clique em **Cut Draw** para cortar o objeto. #. Apague a linha e a parte não desejada (se necessário). Há ainda a possibilidade de segmentar um objeto por seleção de vértices. Para tal: #. Selecione o objeto e clique em **Edit Mode Clean**. #. Selecione o vértice inicial e clicar em **Sel. More**, automaticamente uma leva de vértices vizinhos serão selecionados e o comando pode ser ativado até que a área de seleção satisfaça a região pretendida, no caso a mandíbula. Caso o usuário selecione vértices demais e ultrapasse a região desejada, ele pode retroceder a seleção clicando em **Sel. Less**. #. Assim que a parte desejada é selecionada, basta clicar en **Separate Selected!** e o sistema se encarrega de separar a região, sair do modo de edição e ainda deixar selecionado apenas o objeto correspondente a seleção efetuada pelo usuário. Há ainda a possibilidade de trocar o pivô de rotação, em **Pivot Rotation**, caso o usuário deseje testar a rotação de uma mandíbula segmentada, por exemplo. Ao clicar em **Save** será gerado o seguinte arquivo: **Seg-John_Simpson.blend**. Photo Face Segmentation ----------------------- Nesta seção o usuário pode isolar a porção frontal da face por segmentação automática. .. figure:: images/20191203_2.png :align: center Fotografias originais (acima) e após a segmentação facial (abaixo). Para tal basta: #. Indicar o diretório com as fotos. #. Clicar em **Start Segmentation** e aguardar. #. Assim que os cálculos forem finalizados será aberto o gerenciador de arquivos apresentando as imagens resultantes. .. _Photogram_Start: Photogrammetry Start -------------------- No OrtogOnBlender é possível digitalizar faces e objetos através de fotogrametria, grosso modo, escaneamento 3D por fotografia. É imprescindível que o usuário clique em **Start Segmentation!** de modo a limpar a cena para receber o modelo digitalizado. Caso não faça isso, pode ter certa dificuldade em localizar o modelo para alinhá-lo e segmentá-lo. O sistema oferece três opções para o usuário: **OpenMVG+OpenMVS** (Padrão), **SMVS+Meshlab** e **Meshroom (AliceVision)**. .. figure:: images/20190713_3.png :align: center Digitalização com textura ativada (à esquerda) e digitalização com relevo em malha e alta resolução (à direita). OpenMVG+OpenMVS ~~~~~~~~~~~~~~~ Trata-se do padrão do sistema, o OpenMVG+OpenMVS costuma ser mais rápido do que as outras opções e oferece uma textura de alta qualidade. O processo de digitalização é relativamente simples, basta fazer uma sequência de fotos, copiá-la para um diretório que será indicado pelo usuário e na sequência clicar no botão **Start Photogrammetry!** .. tip:: Se o objetivo for digitalizar faces, não há a necessidade de mudar os valores de **D Factor** e de **Smooth Factor** que por padrão são **6** e **16**. No caso de digitalização de peças arqueológicas, por exemplo, os valores seriam **4** e **4**, já na digitalização de modelos de arcadas dentárias os valores serão **1** e **1**. .. tip:: Na documentação do OrtogOnBlender são fornecidos dois protocolos para a tomada fotográfica: **Protocolo de fotogrametria da face** e **Protocolo simples de fotogrametria para crânios**. Procure-os no índice. .. important:: As feramentas de fotogrametria só foram possíveis dentro do Blender graças as bibliotecas OpenMVG de `Pierre Moulon `_, a biblioteca OpenMVS de `cdcseacave `_ e a biblioteca AliceVision (`Meshroom `_). SMVS+Meshlab ~~~~~~~~~~~~ Mais lento, mas geralmente com melhores resultados em cenários maiores. A versão do Windows não conta com geração de textura. O processo de digitalização é simples, basta fazer uma sequência de fotos, copiá-la para um diretório que será indicado pelo usuário e na sequência clicar no botão **Alternative Photogrammetry I** Meshroom (AliceVision) ~~~~~~~~~~~~~~~~~~~~~~ Fornece resultados inferiores aos dois outros modos, mas oferece uma alternativa de geração de textura no Windows. Ainda indisponível para o Mac OS X. O processo de digitalização é simples, basta fazer uma sequência de fotos, copiá-la para um diretório que será indicado pelo usuário e na sequência clicar no botão **Alternative Photogrammetry II** Ao clicar em **Save** será gerado o seguinte arquivo: **Photogram-John_Simpson.blend**. .. _Photogram_Align_Scale: Photogrammetry Align & Scale ---------------------------- A fotogrametria fornecida pelo OrtogOnBlender costuma oferecer bons resultados em relação ao volume do modelo, no entanto, quando a malha é gerada ela não conta com a dimensão real, ficando a cargo do usuário redimensionar o objeto colocando-o na escala. Para tal, é necessário seguir este passo-a-passo: #. Selecione o objeto resultante da fotogrametria. #. Clique no ponto cantal lateral direito (ou em um ponto de referência à direita do objeto) e em seguida pressione **Cantal Lateral Right**. #. Clique no ponto cantal lateral esquerdo (ou em um ponto de referência à esquerda do objeto) e em seguida pressione **Cantal Lateral Left**. #. Clique em um ponto inferior como o nariz, lábio, etc. Em seguida pressione **Down Point**. #. Informe a distância entre os dois primeiros pontos em **Real Size** pressione o **ENTER**. #. Clique em **Align and Resize**. Logo abaixo o usuários contará com uma série de ferramentas para segmentar o modelo da maneira que melhor se encaixar às suas necessidades: * **Segmentation Cut Through**: Corte lateral de fora a fora. Mais simples, mas pode apresentar problema em faces com alto grau de assimetria. * **Surface Cut**: Corte por desenho tridimensional sobre a superfície da face, o usuário tem maior controle de segmentação da estrutura. Ao clicar em **Save** será gerado o seguinte arquivo: **Align-John_Simpson.blend**. Photogrammetry Modifers ----------------------- .. figure:: images/20190715_1.png :align: center Digitalização original (à esquerda) e digitalização com modificadores ativados (à direita). Um dos diferenciais da fotogrametria do OrtogOnBlender é a possibilidade de enriquecer os detalhes de relevo com modificadores atribuídos automaticamente durante o processo de digitalização. São três os modificadores: * **Smooth**: Alisa a malha dando um aspecto mais suave. * **Multires**: Subdivide a malha aumentando a sua resolução. * **Displace**: Cria um relevo na malha usando como referência a sua textura. .. tip:: Se desejar alterar os parâmetros dos modificadores, vá até a aba **Modifiers**, localizada à direita da interface onde vemos um ícone de uma chave de boca. Anatomical Poins ---------------- O OrtogOnBlender conta com um vasto conjunto de pontos anatômicos para a região da cabeça: * Anatomical Points - Head. * Anatomical Points - Maxilla. * Anatomical Points - Mandible. * Anatomical Points - Teeth. * Anatomical Points - Soft Tissue. Como proceder para inserir um ponto: #. Troque o modo para **Cursor** (posicionamento de cursor). #. Clique sobre a região desejada na malha 3D. #. Pressione o botão do ponto anatômico desejado. Para ocultar e visualizar os pontos basta usar os botões **Hide Anatomical Points** e **Show Anatomical Points**. .. important:: A composição das ferramentas de pontos anatômicos foi possível graças ao auxílio constante do **Dr. Richard Gravalos**, a ele são direcionados efusivos agradecimentos! Cephalometry ------------ Esta seção apresenta ângulos e medidas que são gerados a partir dos pontos anatômicos. O OrtogOnBlender oferece duas opções de cefalometria: **Arnett** e **USP** (+Unesp/Araraquara). USP (+Unesp/Araraquara) ~~~~~~~~~~~~~~~~~~~~~~~ Em cada ângulo apresentado o usuário pode visualizar se os pontos estão presentes na cena. Se falta algum ponto para compor um ângulo, basta adicioná-lo clicando no botão correspondente. Sempre que o usuário desejar ele pode atualizar os cálculos clicando em **Calculate!!!** .. important:: Para que o cálculo seja efetuado, é imprescindível que todos os pontos anatômicos estejam visíveis. Para tal, o usuário deve clicar em **Show Anatômical Points**. Para mostrar ou atualizar os valores, basta clicar em **Calculate All!!!** Osteotomy --------- Esta seção é responsável pela criação das osteotomias do crânio. Ao usuário são oferecidas as seguintes opções: **AUTO**, **MANUAL**, **BOOLEAN** e **DRAW**. AUTO ~~~~ Oferece a possibilidade de inserir os planos de corte baseados na posição dos pontos anatômicos. Como funciona: #. Posicione os pontos anatômicos informados nos botões da seção. #. Clique em **Create Cut Planes** e todos os planos de corte serão posicionados automaticamente, além disso o usuário contará com manipuladores visuais para deslocar os planos pelo espaço 3D. #. Junte os planos de corte em um objeto (com o **shift** pressionado), selecionando-os e clicando em **Join All (Union)**. #. Para cortar selecione primeiro o osso, depois o plano (com o **shift** pressionado) e em seguida clique em **Cut Boolean**. .. important:: Para garantir um bom funcionamento dos manipuladores visuais, utilize o Pivot na opção **Median Point**. .. tip:: Use o Clipping Border (**Alt** + **B**) quando for posicionar o plano de corte da maxila, de modo a visualizar apenas a área de interesse. .. warning:: Os planos de corte inseridos são posicionados de modo a facilitar o trabalho do usuário e não para fazê-o de forma automática. Sendo assim, depois de inserir os planos automaticamente será necessário melhorar o seu posicionamento. MANUAL ~~~~~~ Permite ao usuário inserir manualmente os planos de corte. **Chin Plane**: Cria um plano de corte horizontal na região do mento. **Left Ramus Plane** e **Right Ramus Plane**: Cria planos de cortes verticais nas regiões do ramo da mandíbula. **Maxilla Plane**: Cria um plano de corte horizontal dividido em duas partes ligeiramente inclinadas na região da maxila. BOOLEAN ~~~~~~~ Permite ao usuário fazer osteotomias digitais por projeção de desenho. Para tal: #. Selecione o osso desejado e observe-o em *Orthographic* pelo ponto de vista cujo o corte será projetado. #. Desenhe o corte desejado com o botão **Draw Line**. É imprescindível que o desenho conte com uma pequena espessura, caso contrário o boolean não vai funcionar. #. Para efeturar o corte utilize o botão **Subtract IN**. DRAW ~~~~ Oferece uma opção simples e direta de corte por desenho. Para tal: #. Selecione o objeto a ser cortado. #. Clique em **Draw Surface Line**, desenhe a linha de corte sobre o objeto e clique em **ENTER**. #. Clique em **View Cut Line** para visualizar a linha de corte e alterá-la, se necessário. #. Clique em **Cut Visible Line!** Para gerar o corte. .. important:: Os objetos originais, bem como o plano de corte resultante do desenho da linha serão enviados para a coleção **Copied_Objects**. Dynamic ------- Nesta seção o usuário encontrará as ferramentas de configuração das osteotomias e deformação do tecido mole que estão divididas em: **DEFAULT**, **NOSE EXP.** e **EXPERIMENTAL SLICES**. DEFAULT ~~~~~~~ Depois de cortar os ossos usando a osteotomia padrão (de quatro cortes), o usuário precisará: #. Selecionar as peças e clicar em **Setup Osteotomy Auto** de modo a pigmentá-las e renomeá-las conforme as suas posições. #. Selecionar a porção frontal da face e clicar em **Setup Soft Tissue Dynamics** para que os ossos irradiem as regiões de deformação que incidirão na malha da face. Após esse comando ao movimentar as osteotomias ele deformará a pele do paciente virtual. Para visualizar os detalhes internos ou mesmo fazer cortes tridimensionais da estrutura, recorre-se ao botão **Clipping Border**. Se o usuário adicionou pontos anatômicos e pretende parenteá-los às malhas próximas de modo a acompanhar a sua dinâmica, basta clicar em **Parent Points**. NOSE EXP. ~~~~~~~~~ Nesta seção trabalha-se da mesma forma apresentada no **DEFAULT**, mas com a adição de alguns pontos anatômicos de modo a permitir a deformação do nariz: #. Distribua os pontos de **Anatomical Points** ao longo do tecido mole. #. Selecione as osteotomias e clique em **Setup Osteotomy Auto**. #. Selecione a malha da face e clique em **Setup Soft Tissue Dynamics**. Se o usuário adicionou pontos anatômicos e pretende parenteá-los às malhas próximas de modo a acompanhar a sua dinâmica, basta clicar em **Parent Points**. EXPERIMENTAL SLICES ~~~~~~~~~~~~~~~~~~~ Diferente da configuração apresentada em Soft Tissue esta seção aceita um número ilimitado de osteotomias. Para fazer a sua projeção no tecido mole o usuário deverá: #. Selecionar a malha relacionada a face e clicar em **Set Face and Hide**. #. Selecionar as malhas relacionadas as osteotomias e clicar em **Setup Auto!** Se o usuário adicionou pontos anatômicos e pretende parenteá-los às malhas próximas de modo a acompanhar a sua dinâmica, basta clicar em **Parent Points**. Ao clicar em **Save** será gerado o seguinte arquivo: **Dynamic-John_Simpson.blend**. Kinematic --------- É nesta seção que os trabalhos de planejamento cinemático acontecem, ou seja, o deslocamento e rotação das osteotomiasgravadas no tempo. Vertical Measurements ~~~~~~~~~~~~~~~~~~~~~ Uma vez que os pontos anatômicos foram inseridos, o usuário clicará em **Create Vertical Measurements**. Uma linha horizontal será criada na origem na cena (0,0,0) e uma série de cotas verticais brotarão dos dentes 11, 21, 23, 13, 16 e 26 até a linha criada. Para ocultar/mostrar as cotas, basta clicar em **Show/Hide Measurements**. .. important:: Para que a visualização dos pontos e deslocamentos funcione corretamente é imprescindível parentear os pontos anatômicos em **Parent Points**! Controllers ~~~~~~~~~~~ Responsável pela cinemática do pré e pós-operatório digital, esta seção permitirá ao usuário controlar todos os fatores relacionados ao tempo e espaço, podendo organizar as osteotomias nas posições iniciais clicando em **Start** e nas finais (pós) ao clicar em **End**. Também pode-se ministrar a movimentação visual clicando no *play* ou retroceder ao início clicando no *play* reverso. Para criar quadros-chaves de uma osteotomia, é necessário que o usuário: #. Posicione o quadro desejado na Timeline. #. Selecione a osteotomia. #. Faça as modificações necessárias. #. Clique no ícone da câmera para gravar as transformações. Mandible Collision ~~~~~~~~~~~~~~~~~~ Estas ferramentas simulam a colisão dos dentes utilizando como referência uma gravidade inversa. Para tal: #. Configure a posição da maxilla na seção **Vertical Measurements**. #. Clique em **Prepares Maxilla & Mandible**. O comando ocultará as osteotomias originais criando cópias estáticas. #. Se necessário faça um pré-alinhamento do corpo da mandibula, em seguida clique em **Solve Collision Inverted** e aguarde até a simulação começar. Se a simulação não for bem sucedida, reposicione a mandíbula e repita a operação. #. Clique em **Contact Color** e aguarde até que seja apresentada a coloração de colisão. #. Se tudo correr bem, pressione **ESC** para parar a animação e clique em **Apply!!!** Piggyback ~~~~~~~~~ Esta seção oferece ao usuário a possibilidade de parentear (piggyback) e desparentear objetos, bastando selecionar os mesmos e clicar na opção desejada. Onde primeiro seleciona(m)-se o(s) filho(s) e por último o pai. Capturing ~~~~~~~~~ Assim que a cinemática for definida, basta clicar em **Generate Data Action** para gerar a tabela de deslocamento dos pontos anatômicos que será apresentada na saída do Terminal. Spreadsheet ~~~~~~~~~~~ Se o usuário deseja gerar uma planilha .CSV de toda a cinemática envolvida (osteotomias e cefalometria), basta clicar em **GENERATE REPORT**. O add-on chamará o explorador de arquivo e o LibreOffice para abrir a planilha. Se o usuário não dispor do software, poderá então abrir o arquivo manualmente pelo explorador que já apresentará o diretório exportado. Ao clicar em **Save** será gerado o seguinte arquivo: **Kinematic-John_Simpson.blend**. Close Lips ---------- Caso o usuário deseje fazer alguma intervenção manual, como o fechamentos dos lábios ele pode recorrer a esta seção. Para tal: #. Selecione a face e clique em **Create Shape Keys**. #. Use as opções de escultura digital disponíveis e feche os lábios. #. Assim que o trabalho estiver finalizado, clique em **OK! (Object Mode)**. O usuário pode alternar entre a malha original e pós-escultura mudando o valor de **Value** entre 0 e 1. Onde 0 é o estado inicial e 1 o final pós-escultura. Guide and Splint Creation ------------------------- .. figure:: images/20190716_1.jpg :align: center Órtese de braço criada por desenho sobre a malha. Free Draw Solid ~~~~~~~~~~~~~~~ Permite o desenho a mão livre de guias e objetos sobre a malha. Para tal: #. Selecione a malha desejada. #. Clique em **Draw Surface Line**, desenhe a linha correspondente ao objeto desejado e em seguida pressione **ENTER**. #. Clique em **Create Solid by Line** e o objeto será criado sobre a malha. .. tip:: Para engrossar ou afinar o objeto criado: 1) Entre em modo de edição, 2) Selecione todos os vértices com a tecla **A** e 3) Use o comando **ALT+S** aproximando ou distanciando o mouse. Draw Line Tube ~~~~~~~~~~~~~~ Permite a criação de guia ou objetos baseado em *spline* na forma de tubo. #. Selecione o objeto onde os pontos serão posicionados. #. Clique em **Create Points** e vá clicando sobre a região que pretende cortar. #. Assim que finalizar o desenho clique no botão direito do mouse ou no **ESC**. #. Clique em **Create Bezier Volume** e o objeto será criado sobre a malha. .. tip:: O usuário pode engrossar ou afinar o nó do *bézier* selecionando um ou mais deles e clicando em **ALT+S**. .. warning:: Não se esqueça de clicar no **ESC** após criar os pontos desejados, caso contrário o programa continuará criando pontos em todos os lugares onde o usuário clicar no botão esquerdo do mouse! Boolean ~~~~~~~ * **Difference**: Calcula Objeto 1 - Objeto 2 (A-B) ou Objeto 2 - Objeto 1 (B-A). * **Union**: Unifica A+B ou B+A. * **Intersect**: Gera um malha da intersecção de A e B. * **MULTIPLE UNION**: Unifica malhas sem limite de objetos: A+B+C+D+E... Boolean Segmentation ~~~~~~~~~~~~~~~~~~~~ Em **Boolean Segmentation** o usuário pode fazer um desenho de corte no botão **Draw Line** e escolher se deseja apagar a área dentro do desenho (**Subtract IN**) ou fora dele (**Subtract OUT**). Sculpture ~~~~~~~~~ Nesta seção o usuário pode lançar mão das ferramentas de escultura para corrigir os *splints* e guias de corte. Splint ~~~~~~ Uma vez que os pontos já estão posicionados nas arcadas superior e inferior e foram parenteados, o usuário pode criar as posições das osteotomias para a geração dos *splints* intermediário e final clicando em **Maxilla-Origin Mandible-Final**. O usuário poderá corrigir manualmente a posição da mandíbula de modo que os dentes não se toquem e usar as ferramentas de cinemática para gravar os deslocamentos e rotações. Assim que os quadros-chaves forem definidos, basta posicionar o marcador naquele desejado e clicar em **Create Splint** para que o *splint* seja gerado automaticamente tomando como referência os pontos anatômicos previamente colocados e parenteados. O *splint* criado é apenas um elementos com espessura, mas não sulcado pelos dentes. Para proceder com a booleana clique em **Boolean Difference**. Analise o *splint* e veja se tudo está correto, se sim, clique em **View Maxilla & Mandible** para visualizar as estruturas novamente. Collision Test ~~~~~~~~~~~~~~ Esta seção é útil para testar a retentividade de guias e *splints*, bem como a colisão de modelos de dentes. .. figure:: images/20190712_4.png :align: center Collision Test: Contact Color. Uma vez que o usuário definiu os dois objetos que serão usados na simulação, bem como se a gravidade for normal (**DEFAULT**) ou invertida (**INVERTED**), basta seguir os passos: #. Selecione o dois objetos e clique em **Solve Collision**. Se o encaixe não ficar bom, basta mover as peças e repetir o processo até ficar do agrado do usuário. #. Assim que o posicionamento for definido é possível ver o mapa de cor de aproximação clicando em **Contact Color**. O processo costuma demorar de alguns segundos a alguns minutos, dependendo das configurações do computador. #. Se tudo deu certo, basta clicar em ESC e, em seguida, no botão **Apply!** para posicionar as peças na posição final de colisão. Finishing ~~~~~~~~~ Depois de finalizar o processo de planejamento o usuário encontrará nesta seção as ferramentas de preparação para a impressão 3D das peças resultantas. Para prepara a peça para impressão 3D: #. Selecione o objeto e clique em **Prepares 3D Printing**. #. Assim que preparada a peça pode ser exportada em **Export STL**. Ao clicar em **Save** será gerado o seguinte arquivo: **Guide-John_Simpson.blend**.