Calcula uma normal para cada vértice a partir da malha e guarda-a em três canais de propriedades
a começar em normalIdx.
Arestas mais vivas do que minSharpAngle, em graus, mantêm normais separadas de cada lado e ficam
nítidas; a 0 cada triângulo mantém a sua própria normal. Faces planas de vários triângulos ficam planas.
O sólido, o primeiro canal de normais e o ângulo de aresta viva em graus
O sólido com as normais armazenadas
Calcula quão fortemente a superfície se curva em cada vértice e guarda-o em canais de propriedades:
curvatura gaussiana em gaussianIdx, curvatura média em meanIdx.
A curvatura é o inverso do raio de curvatura, positiva onde a superfície é convexa e negativa onde é côncava; um índice abaixo de 0 salta esse canal.
O sólido e os dois canais onde armazenar
O sólido com a curvatura armazenada
Adiciona triângulos a um sólido suavizado até que cada ponto da sua malha fique dentro de tolerance da
superfície suave, de modo que regiões muito curvas recebem mais triângulos do que as planas.
Só um sólido que tenha sido suavizado com smoothOut ou smoothByNormals muda; qualquer outro volta
como uma cópia.
O sólido e a tolerância em unidades do modelo
O sólido refinado
Adiciona triângulos a um sólido dividindo cada aresta em troços com aproximadamente o comprimento dado, adicionando vértices interiores para manter os triângulos uniformes.
Num sólido suavizado com smoothOut ou smoothByNormals os novos vértices movem-se para a
superfície suave; caso contrário a superfície fica como está.
O sólido e o comprimento de aresta pretendido em unidades do modelo
O sólido refinado
Adiciona triângulos a um sólido dividindo cada aresta em number troços; com 2, cada triângulo
torna-se quatro.
Num sólido suavizado com smoothOut ou smoothByNormals os novos vértices movem-se para a
superfície suave; caso contrário os novos triângulos ficam planos.
O sólido e em quantas partes dividir cada aresta
O sólido refinado
Marca um sólido para suavização calculando tangentes a partir dos seus triângulos, de modo que um refine
ou refineToLength posterior curva os novos triângulos numa superfície suave.
Arestas mais vivas do que minSharpAngle, em graus, mantêm-se vivas; minSmoothness acima de 0 arredonda
um pouco essas, e 1 suaviza tudo. A própria geometria não muda até ser
refinada.
O sólido, o ângulo de aresta viva em graus e a suavidade das arestas vivas
O sólido com tangentes de suavização
Marca um sólido para suavização usando as normais guardadas nas suas propriedades de vértice, de modo que um
refine ou refineToLength posterior curva os novos triângulos numa superfície suave.
normalIdx é o primeiro dos três canais de normais, tal como calculateNormals os guarda;
onde as normais num vértice discordam a aresta mantém-se viva.
O sólido e o primeiro canal de normais
O sólido com tangentes de suavização
Remove vértices da malha de um sólido mantendo cada superfície dentro de tolerance de onde
estava, para reduzir a contagem de triângulos.
O resultado mantém um subconjunto dos vértices originais; o próprio valor de tolerância do sólido fica inalterado.
O sólido e quanto as superfícies se podem mover, em unidades do modelo
O sólido simplificado
Reescreve as propriedades de vértice de um sólido com uma função que recebe a posição e as propriedades antigas de cada vértice e preenche as novas.
numProp define quantas propriedades cada vértice tem depois, de modo que canais podem ser adicionados ou
removidos; ler para lá da contagem antiga ou escrever para lá da nova é indefinido.
O sólido, o novo número de propriedades e a função que preenche as propriedades
O sólido com as novas propriedades
Dá a um sólido uma nova tolerância, o erro de arredondamento que pode transportar, e simplifica a sua malha quando a tolerância cresce.
Triângulos mais finos do que a tolerância são tratados como degenerados e removidos.
O sólido e a tolerância em unidades do modelo
O sólido com a nova tolerância
Reserva uma sequência de count ids de malha únicos e devolve o primeiro, para marcar conjuntos de
triângulos que possam ser encontrados de novo depois de operações posteriores.
Atribua-os ao runOriginalID de uma malha antes de construir um sólido a partir dela, por exemplo para manter
vários materiais separados.
Quantos ids reservar
O primeiro dos ids reservados; os restantes seguem em sequência
Cria uma cópia de um sólido que conta como um novo original, de modo que a cópia pode transportar as suas próprias propriedades de vértice, como um mapeamento UV diferente, e ser distinguida daquilo de que foi construída.
As faces coplanares são fundidas e as arestas entre elas colapsadas pelo caminho; mantenha antes a via da malha quando essas arestas tiverem de ficar.
O sólido
A cópia marcada como original
Agrupa vários sólidos num só, o inverso de decompose.
Os sólidos que se sobrepõem são fundidos, como faria uma união booleana; os mantidos afastados continuam a ser peças separadas do mesmo resultado.
Os sólidos a agrupar
Um sólido que contém todos eles
Divide um sólido nos seus pedaços separados e desligados, o inverso de compose.
Um sólido que seja todo um só pedaço volta como uma lista com uma cópia.
O sólido
As partes separadas
Corta um sólido com um plano paralelo ao plano XY à altura Z dada e devolve a secção plana como uma secção transversal.
Uma altura no fundo da caixa delimitadora do sólido dá as suas faces inferiores; uma altura no topo dá uma secção transversal vazia.
O sólido e a altura Z do corte
A secção como uma secção transversal
Achata um sólido sobre o plano XY e devolve o seu contorno como uma secção transversal, como a sua sombra sob uma luz diretamente acima.
O sólido
O contorno como uma secção transversal
Envolve um sólido no seu invólucro convexo, a menor forma sem reentrâncias que o contém, como película retrátil bem apertada à sua volta.
O sólido
O invólucro convexo
Envolve pontos, sólidos ou uma mistura de ambos num só invólucro convexo, a menor forma sem reentrâncias que os contém a todos.
Os pontos e os sólidos a envolver
O invólucro convexo
Alterar sólidos Manifold para lá das operações booleanas: envolvê-los num invólucro convexo, fatiá-los e projetá-los em secções transversais, refinar e suavizar as suas malhas, simplificá-los, compô-los e decompô-los, e calcular normais e curvatura em canais de propriedades dos vértices. Um canal de propriedades é um número por vértice guardado na malha, como os três canais de uma normal. Cada método devolve um novo sólido.