Mudando o Little Planet gerado pelo Panotour no XML

Softwares disponíveis para publicar na internet, visualização no computador, formatos e conversão para impressão, papéis, tamanhos e tudo afim.
Avatar do usuário
cartola
Site Admin
Mensagens: 1228
Registrado em: 11 Mai 2012, 12:40
Localização: Rio de Janeiro
Contato:

Mudando o Little Planet gerado pelo Panotour no XML

Mensagem por cartola » 27 Mai 2014, 23:24

Oi pessoal,

um colega me perguntou em particular como acertar o efeito de entrada do Little Planet de um tour feito no Panotour. Pra isso ele tentou mexer no XML, mas não estava conseguindo acertar.

Como não sei se posso publicar os códigos aqui, vou tentar passar as dicas genéricas.

Isso é feito através do ajuste de alguns parâmetros que fazem com que a foto esteja inicialmente no formato little planet, são eles:

<view fisheye = "1" stereographic = "true" fovmax = "150" fov = "150">

Os valores de fovmax e fov são meio opcionais e podem não aparecer assim no código gerado pelo Panotour. Na verdade o Panotour abusa da programação, criando inúmeras funções e em geral dividindo os XMLs em vários sub-arquivos, dificultando um pouco as coisas pra quem não está acostumado com códigos complexos. A dica principal é: tente se concentrar no que precisa - mas pode ser difícil.

Muitas vezes isso é atribuído de outras formas, como com as funções "set" e as vezes os valores estão disfarçados em variáveis, definidas de várias formas diferentes, com funções matemáticas e tal.

É claro que entender a estrutura de objetos que existem nessa programação é importante pra entender as variações. Isso é parecido com programação orientada a objetos, coisa de programador. Quem não é programador pode ter muita dificuldade de entender isso. Contratem programadores e deem um emprego pra alguém! kkkk ou então me contratem pontualmente! rs...

Voltando ao efeito, outra coisa fundamental é definir corretamente os parâmetros hlookat e vlookat pra indicar pra onde a visão está apontada tanto antes quanto depois. Eles é que vão fazer, por exemplo, a imagem girar se a gente definir um hlookat diferente antes e depois do efeito. Se eles ficarem iguais a little planet não gira, e é esse o problema que o colega queria resolver.

O efeito de transição é feito com o comando "tween" para os parâmetros que variam. Isso vai fazer o krpano levar gradualmente o valor de um ponto ao outro. Por exemplo, levar o campo de visão de 150 para 90 ou quaisquer outros valores que tenhamos definido. O efeito de giro precisa de um "tween" no hlookat, levando ele pra um novo valor, diferente do definido inicialmente. Pra girar 360º, por exemplo, basta somar 360 ao valor inicial (que pode não ser zero caso desejemos que a visão inicial esteja olhando pra um ponto específico.

Resumindo, de cara definimos os parâmetros iniciais (exemplos):

Código: Selecionar todos

set(view.hlookat,200);
set(view.vlookat,90);
set(view.fovmax, 150);
set(view.fov, 150 );
set(view.fisheye, 1 );
set(view.stereographic, true);
Ou isso pode ser no parâmetro "view":

Código: Selecionar todos

<view hlookat="200" vlookat="90" fovmax="150" fov="150" fisheye="1" stereographic="true">
Podem ter outras coisas, mas pro Little Planet isso é o que interessa.

Daí você tem um evento que dispara a alteração deles, e isso é numa função, chamada "action" no krpano.

Código: Selecionar todos

tween(view.hlookat, -272, 8.5, easeInOutQuad );
tween(view.vlookat, 16.5,   8.5, easeInOutQuad );  
tween(view.fov, 90, 8.5, easeInOutQuad );
tween(view.fisheye, 0.0, 8.5, easeInOutQuad, WAIT);
set(view.stereographic,false);
set(view.fovmax, 120);
É interessante entender essas poucas coisas (poucas em relação ao tanto além disso que ainda há pra entender) e isso só é possível consultando os manuais da linguagem do krpano, abertamente disponíveis pela web:

Aqui o índice das docs: http://krpano.com/docu/

E as mais relevantes:
http://krpano.com/docu/xml/
http://krpano.com/docu/actions/

Bom, depois dessa "teoria" toda (meio esburacada) essa é a função entregue pelo Panotour e que faz o little panet se converter na foto normal:

Código: Selecionar todos

  <action name="tweennormalview">
    tween(view.fovmax, get(panoview.fovmax), 5, easeInOutQuad);
    tween(view.vlookat, get(panoview.v), 5, easeInOutQuad);
    if(panoview.fov LE view.fov, tween(view.fov, get(panoview.fov), 5, easeInOutQuad); );
    tween(view.fisheye, 0.0, 5, easeInOutQuad,
      set(view.architectural, 0.0);
      set(view.stereographic, false);
      set(view.pannini, false);
      set(view.fisheyefovlink, 0.5);
      events.dispatch(onPanoStart);
      events.dispatch(onEndLittlePlanetIntroduction);
      if (tour_firstlittleplanet,
        events.dispatch(onTourStart);
        set(tour_firstlittleplanet, false);
      );
    );
  </action>
Um dos problemas é achar que é essa função que faz o serviço sujo, pois os caras fazem uma função, que chama outra, que chama outra e por aí vai. O segredo aqui é entender aquela teoria e saber que tem que ter uns "tween"s alterando os valores numéricos e uns "set"s alterando outras coisas. E tem que saber o que você quer, claro. Pra que a foto gire, tem que mudar o hlookat da view.

Vejam que o programa não está sequer alterando o hlookat, então tem que fazer ele alterar. Outro problema é que o programa não define ele claramente com um valor explícito. Ele faz um monte de contas, então o mais certo (não o mais prático, talvez) é pegar o valor atual e somar. Aí começa a ter que saber os comandos, e programar!
Eu acrescentaria:

Código: Selecionar todos

Math.round(novohlookat, view.hlookat);
mod(novohlookat, 360);
if (novohlookat GT 180,
  sub(novohlookat, 360);
,
  if (novohlookat LT -180, add(novohlookat, 360));
);
tween(view.hlookat, get(novohlookat), 5, easeInOutQuad );
Isso foi um código mais genérico, pegando emprestado outro trecho do próprio krpano que já estava no código. O lance é diminuir ou somar 360 dependendo do resto da divisão inteira do arredondamento do valor atual.

Eu colocaria isso logo no início, depois da linha que abre o "<action"

O mais simples seria provavelmente acrescentar simplesmente:

Código: Selecionar todos

tween(view.hlookat, 360, 5, easeInOutQuad );
e ir alterando o valor 360 até achar que está legal.

Outra coisa que notei é que o valor inicial de vlookat está em 0, ou seja, a visão inicial aponta pro horizonte e não pra baixo. Não sei se ele já fez isso de propósito, mas se não, é só alterar pro que lhe convier, pois isso está explicito no código.

O código gerado pelo krpano em geral é bem mais simples, bem como as personalizações que eu vou fazendo, que não trazem essa complicação que o Panotour bota, mas enfim, não há muito o que fazer sobre isso, é só um comentário inútil, rs.

Abs, Cartola.

Avatar do usuário
cartola
Site Admin
Mensagens: 1228
Registrado em: 11 Mai 2012, 12:40
Localização: Rio de Janeiro
Contato:

Re: Mudando o Little Planet gerado pelo Panotour no XML

Mensagem por cartola » 02 Out 2014, 12:48

Oi,

pra efeito de registro, ele usou a opção mais simples, a última ali em cima, acrescentando uma linha ao código, e deu certo.

Abs, Cartola.

Avatar do usuário
joao.carlos
Mensagens: 14
Registrado em: 14 Ago 2014, 11:56

Re: Mudando o Little Planet gerado pelo Panotour no XML

Mensagem por joao.carlos » 30 Jun 2015, 13:31

Cartola,

Esse mesmo caso/exemplo também se aplica ao XML do Krpano?

Abraços.

Avatar do usuário
cartola
Site Admin
Mensagens: 1228
Registrado em: 11 Mai 2012, 12:40
Localização: Rio de Janeiro
Contato:

Re: Mudando o Little Planet gerado pelo Panotour no XML

Mensagem por cartola » 30 Jun 2015, 15:29

Também João. Na verdade o Panotour usa o krpano, só que ele cria os XMLs de uma maneira própria e não da maneira que o krpano costuma. É como se eu resolvesse criar meus próprios XMLs. Pra alguém mexer depois vai ter que entender como foi feito ou procurar pontualmente o que quer alterar.

Abs, Cartola.

Avatar do usuário
joao.carlos
Mensagens: 14
Registrado em: 14 Ago 2014, 11:56

Re: Mudando o Little Planet gerado pelo Panotour no XML

Mensagem por joao.carlos » 30 Jun 2015, 15:35

Consegui fazer,

Me pareceu ficar um pouco pesado no carregar, deixei 3 segundos para cada objeto animado, mas pode ser a resolução das imagens também, ficaram maiores.
Estou quase satisfeito com os resultados.

http://www.joaolima.com/imer/igreja/tour.html

Obrigado, abraços.

Avatar do usuário
cartola
Site Admin
Mensagens: 1228
Registrado em: 11 Mai 2012, 12:40
Localização: Rio de Janeiro
Contato:

Re: Mudando o Little Planet gerado pelo Panotour no XML

Mensagem por cartola » 30 Jun 2015, 15:46

Eu costumo botar pra girar quando termina de carregar a imagem de preview. Nessa sua parece que espera carregar a imagem com a resolução boa, aí aqui demorou um pouco pra começar, mas depois fluiu bem.

Um detalhe nessa imagem aí é que tá precisando ser nivelada. Bota umas linhas verticais que o costurador nivela.

Abs, Cartola.

Avatar do usuário
joao.carlos
Mensagens: 14
Registrado em: 14 Ago 2014, 11:56

Re: Mudando o Little Planet gerado pelo Panotour no XML

Mensagem por joao.carlos » 30 Jun 2015, 17:26

Olá Cartola.

Realmente olhando bem agora a imagem, não tinha percebido que ela ficou desnivelada,
o tripé tem nivelador e nem prestei atenção nisso.

Obrigado a dica, abraços.
João.

Avatar do usuário
cartola
Site Admin
Mensagens: 1228
Registrado em: 11 Mai 2012, 12:40
Localização: Rio de Janeiro
Contato:

Re: Mudando o Little Planet gerado pelo Panotour no XML

Mensagem por cartola » 01 Jul 2015, 21:29

O nivelador do tripé não garante que a foto vai ficar nivelada depois. Pra acertar a costura, através do posicionamento dos pontos de controle, o custurador faz de tudo com as imagens, distorce, altera o campo de visão, reposiciona e gira. Ao girar, se não tiver algo ali que diga o que é uma linha vertical, ele vai desnivelar a imagem. Pra fotos imersivas eu acho um nivelador no tripé algo meio inútil. A única utilidade pode ser fazer com que o costurador ache mais facilmente as linhas verticais e horizontais de forma automática. Quando ele não fizer isso só nos resta criá-las na mão.

Abs, Cartola.

Avatar do usuário
joao.carlos
Mensagens: 14
Registrado em: 14 Ago 2014, 11:56

Re: Mudando o Little Planet gerado pelo Panotour no XML

Mensagem por joao.carlos » 01 Jul 2015, 21:51

Olá Cartola.

Olhando o PTgui e o Hugin, agora que vi esses pontos verticais/horizontais,
Realmente acreditava que nivelando o tripé corrigia o problema...

Vou tentar corrigir aquela outra foto e posto depois

Obrigado pela resposta, abraços.

At.
João.

Avatar do usuário
cartola
Site Admin
Mensagens: 1228
Registrado em: 11 Mai 2012, 12:40
Localização: Rio de Janeiro
Contato:

Re: Mudando o Little Planet gerado pelo Panotour no XML

Mensagem por cartola » 02 Jul 2015, 11:08

O fluxo automático do Hugin (e acredito que do PTGui também) já tenta encontrar essas linhas automaticamente. Usando a interface simples do Hugin (menu Interface) vai ver nitidamente os 3 botões pra fazer o processo automático, que, se der certo, pode facilitar sua vida.

Esse tutorial do Hugin mostra como criar linhas. Embora mostre a interface antiga do Hugin, o processo de criação de linhas não mudou.

Abs, Cartola.

Responder