Eu não tenho uma câmera em particular no momento, apenas estou curioso para saber como isso é feito, programaticamente / matematicamente.
Eu tenho um espaço 3D, um retângulo, com uma câmera em um canto, olhando para dentro.
Eu tenho um objeto em movimento naquele retângulo que está transmitindo (x, y, z) coordenadas de sua posição atual.
Quero pegar essas coordenadas e traduzi-las em instruções para que a câmera aponte para essa posição.
Como é feita essa tradução normalmente?
Respostas:
Trigonometria!
Minha câmera é uma DLink 5020-L e possui comandos de panorâmica / inclinação que podem ser dados por meio de uma API . Ele também possui posições predefinidas para definir e também pode ser acionado através da API
Pré-inicialização
Position 1
Iniciar
Position 1
Olhe para o objeto
Você pode negar os resultados anteriores, dependendo de como sua câmera é colocada
(Vou adicionar alguns esquemas quando tiver tempo)
fonte
Ótimas respostas já, gostaria de acrescentar algumas outras coisas que você deve levar em consideração. Como hardlib e Goufalite já mencionaram, a maneira de fazer isso é trigonometricamente. Eu desenhei uma representação em 2D da câmera e do objeto IoT:
Como você pode ver, o campo de visão da câmera será maior que o objeto - se não estiver próximo, quando o objeto se afastar.
Agora, você pode querer que a câmera esteja sempre centrada no objeto. Nesse caso, você pode simplesmente fazer os cálculos que o hardlib referenciou:
... que será o ângulo no sentido anti-horário do eixo x, por convenção. Você também precisará do ângulo longe do nível:
Obviamente, você terá que calcular com base na posição da câmera que está na origem nos três eixos.
Por outro lado, você pode preferir não fazer a câmera se mover mais do que o necessário, ou seja, fazer a câmera se mover apenas quando o objeto parecer estar prestes a sair do quadro. Nesse caso, você provavelmente desejará uma variável de "pressão" que aumentará a probabilidade de a câmera mudar de ângulo com base na distância que o objeto está da borda do quadro.
Se você seguir esse caminho, precisará conhecer o ângulo do campo de visão da câmera nos dois campos de visão, para poder determinar onde o objeto é comparado ao campo de visão da câmera.
fonte
Isso normalmente é feito com trigonometria básica .
Comece trabalhando em um único plano plano 2D com a câmera na origem (0,0) e o objeto em (x, y)
Dado que a distância x será o lado adjacente do triângulo e a distância y será o oposto que você obtém:
para que o ângulo de panorâmica possa ser encontrado com
Você também pode determinar a distância em linha reta (os hipotenos) entre a câmera e o objeto com:
Dando:
Agora você pode usar a distância h com a altura z para calcular o ângulo de inclinação da mesma maneira.
Depois de ter os ângulos, você pode alimentá-los com o que estiver controlando a panorâmica / inclinação da câmera.
fonte