Em algum momento do meu e-on, mantive os aparelhos da linha de produtos Vue .
Posso lhe dizer, você levará vários dias, em tempo integral.
A menos que você encontre alguma biblioteca ou uma maneira super inteligente, a maneira clássica é obter a coordenada do mouse na janela quando você clica. Se for uma coordenada relativa à janela de visualização, você pode simplesmente dividir xey pela largura e pela altura. obter um vetor (float 2d) no intervalo [0,1]. subtraia (0,5,0,5) a ele para entrar no intervalo [-0,5, 0,5] para x e y.
Então, você faz um raio a partir dessa coordenada usando xey simplesmente como o raio xey, e define z para a distância focal. Às vezes, a proporção é uma dor de cabeça nesta operação. Um pouco de brincadeira e erro de tentativa o consertarão.
Em seguida, é necessário verificar a interseção com seus elementos de aparelhos, ou você tem uma malha que você gerou ou modelou no liquidificador ou em outro DCC, ou peças de malha que podem se articular entre si ... Use essas partes de malha como um raio / consulta de interseção do triângulo.
Ou, se houver, raio / cilindro, raio / esfera, de acordo com a aparência e as peças do dispositivo.
Você precisa ter rotinas de interseção capazes de aplicar uma matriz de transformação na primitiva em que elas colidem . Extremamente importante porque seu dispositivo se traduzirá com o objeto que serve para mover, girará e será escalado com o inverso da distância da câmera, para manter um tamanho fixo na tela.
Então você tem a parte de interação, o mais fácil é pegar o delta do ponto quando o mouse foi o primeiro evento "mouse down" e a posição atual "Mouse move", em 2D puro, e usar esse delta como o movimento atual do eixo no espaço do mundo, multiplicado por alguns k
que você decide empiricamente. De acordo com suas unidades internas versus pixel versus escala atual de zoom, etc.
A etapa final é simplesmente aplicar a matriz do dispositivo ao objeto manipulado, para que ele o siga.
Eu digo a você que é uma jornada bastante infernal para implementar, e se você estiver fazendo isso no seu tempo livre, espere mais de uma semana. Várias semanas se você estiver descobrindo completamente o campo. Mais de um mês se seus fins de semana estiverem ocupados com outras atividades :)
Eu sugiro que você baixe o Embree 2.0 da intel para fazer a consulta de interseção raio / triângulo para você, para que você não precise se preocupar em codificá-lo. Ou você pode copiar / colar, sem piedade, e adaptar o código do liquidificador ... Eu acho que eles mudaram para a licença Apache? Deve ser possível legalmente.