User Tools

Site Tools


tutoriais:vr_no_linux_com_celular

Habilitando VR no Linux usando um celular e um Cardboard VR como headset

Quer brincar com VR (Realidade Virtual) no Linux sem gastar muito? A tecnologia para realidade virtual já existe a muitos anos, porém os preços dos headsets VR são um pouco impeditivos ainda: kits completos com controles e sensores de posição como Oculus Rift ou HTC Vive passam facilmente dos 5000-8000 reais. Kits mais simples como o PSVR passam dos 3000 e por aí vai.

Mas para quem busca algo bem mais simples, mais para a visão em 3D e “headtracking” para alguns jogos e experimentar um pouco da sensação, é possível comprar ou até montar um suporte para o celular e utilizar o seu próprio celular como um par de telas para realidade virtual: O celular fica encaixado em um suporte em frente aos olhos e a tela dele fica dividida como se fossem 2 telas independentes (olho esquerdo e direito). Um par de lentes ajustáveis no suporte ajuda a enxergar a tela próxima ao rosto e o giroscópio do aparelho repassa ao computador as informações de posicionamento da cabeça, para o computador saber para onde se está olhando.

No Windows há alguns softwares pagos que fazem essa integração do celular com o computador. No Linux também temos essa possibilidade, utilizando alguns programas e scripts FOSS para isso.

Abaixo um guia prático de como pude colocar para funcionar tudo isso em um computador com Linux openSUSE usando uma placa de vídeo antiga (Radeon HD 6870) e um celular smartphone de desempenho médio que pode ser encontrado usado por menos de 600 reais (Asus Zenfone Max Shot 32GB).

NOTA: Não há como comparar a experiência de desempenho obtido nesse guia com a experiência de um headset completo de última geração. É sabido que kits dedicados novos possuem uma taxa de atualização e qualidade de tela muito superior ao que será alcançado com esse guia. Placas de vídeo mais modernas e processadores mais potentes também devem entregar melhor desempenho nas imagens enviadas ao kit. Esse guia é mais para mostrar que o VR não está tão longe assim como parece mesmo se você dispor de hardware mais antigo, investindo menos de 100 reais.

Itens necessários

  1. Computador com Steam - O tutorial foi feito pensado para executar o SteamVR, que é a plataforma de realidade virtual dentrio do Steam. O computador onde fiz todos os testes é um Ryzen 3200G com 16GB de RAM, porém com uma placa de vídeo Radeon HD 6870 de 1GB de vídeo apenas. Penso em testar em outro computador com placa de vídeo melhor, porém processador mais antigo e menos memória.
  2. Controle - Aparentemente o SteamVR espera que você use um controle dentro do ambiente de realidade virtual. Qualquer controle padrão de hoje em dia (2 sticks, dpad e 10-11 botões) deve servir.
  3. Celular tipo smartphone com sensor de giroscópio e capacidade de “Tethering” - O celular do teste é um celular de 2 anos atrás que pode ser encontrado usado recondicionado por menos de 600 reais (Zenfone MaxShot) . Imagino que muitas pessoas tenham celular potente o suficiente para o que precisamos, já que o celular vai apenas reproduzir a tela e repassar o giroscópio. Tethering é a capacidade do celular funcionar como ponto de acesso para repassar rede para o computador. Aparentemente Android 5 em diante já consegue fazer isso.
  4. Cabo de dados bom e comprido! - Muita gente usa um cabo curto que só serve para carregamento do celular. Para passar as imagens de forma decente, os programas que vamos usar fazem a transferência das imagens por USB. Se o seu cabo não funciona com dados, não irá receber imagens. Se for muito curto, você não conseguirá mover sua cabeça tão livremente.
  5. Suporte de celular para realidade virtual confortável: Há diversos suportes para celular para uso como realidade virtual. Pegue um que se ajuste bem à sua cabeça, que tenha espaço para usar com óculos (se você usa óculos, deve conseguir usar o headset com seus óculos), que tenha alguma regulagem de distância entre as lentes e que caiba seu celular!
  6. Linux - Este tutorial prático é para fazer funcionar no openSUSE Tumbleweed (versão atualizada em Julho-2022), mas se prestar atenção nos links originais e nas dicas, possivelmente conseguirá adaptar para qualquer distro atual.
  7. App Trinus CBVR Lite no celular (instalado pela PlayStore mesmo) para poder receber as imagens e repassar o giroscópio. Há outras soluções mas esse tutorial foi feito usando o LinusTrinus, que é um conjunto de scripts e softwares que fazem o papel do TrinusVR no Linux.
  8. LinusTrinus - Software e conjuntos de scripts que fazem a ponte entre o SteamVR e o celular rodando Trinus CBVR Lite.

Passo-a-passo para instalação

  • Instale Steam no seu computador, depois dentro do Steam instale o SteamVR, que é o conjunto base de coisas necessárias para funcionar VR no Steam e jogos VR. Talvez funcione outras coisas que não o Steam, mas meu foco nesse tutorial é fazer funcionar o SteamVR.
  • Vamos agora seguir os passos do INSTALL.MD do LinusTrinus https://github.com/MyrikLD/LinusTrinus/blob/master/INSTALL.md, comentando os passos e adicionando alguns passos extras e dicas relativas ao openSUSE Tumbleweed que talvez sejam úteis para outras distros.
  • Fazer o Tethering USB do smartphone para o computador:

Conecte seu cabo USB no celular e no computador e ative o modo Tethering USB. No meu celular foi apenas conectar ambos, clicar na opção de “mais opções de conexão” que apareceu e mudar de “Carregamento” para “Tethering USB”. No computador, rode o comando “nmcli d” e veja se apareceu uma “placa de rede” nova conectada. Se apareceu mas está desconectada, você pode fazer por exemplo “nmcli d c enp2sXYZ” para mandar conectar nessa placa de rede que apareceu, que é o seu celular fazendo tethering. Não foi necessário desativar a placa de rede oficial do computador no meu caso, fiquei com ambas conectadas. Se o seu não ficou ambas conectadas, depois de usar vc vai precisar usar por exemplo “nmcli d c enp2sXPTO” para voltar a conectar na placa de rede padrão. nmcli supõe que vc esteja usando NetworkManager, não sei como é em outros.

  • Instale as seguintes dependências (isso pro openSUSE): ffmpeg, openvr, xwd, xwininfo e git:

Ffmpeg deve funcionar o do sistema ou o do repositório do packman. OpenVR peguei pelo software.opensuse.org, de um repositório de usuário aqui: obs://build.opensuse.org/home:leviathanch xwd, xwininfo e git instalei do repo oficial do openSUSE. o Git na verdade é pra poder clonar o repo do LinusTrinus.

  • Sugiro criar um diretório para trabalhar com as coisas do LinusTrinus (mkdir vr)
  • Entre no seu diretório que gostaria de deixar o repo do LinusTrinus (cd vr)
  • Clone o repo do LinusTrinus (git clone –depth 1 https://github.com/MyrikLD/LinusTrinus)
  • Entre no diretório baixado - (cd LinusTrinus)
  • Sugestão de criar um virtualenv para trabalhar com as coisas:
python3 -m venv .venv           
source .venv/bin/activate       
pip install frame-generator wand

Note que “source .venv/bin/activate” irá mudar seu prompt para indicar que vc está com um virtualenv ativo. Lembre-se que para rodar o LinusTrinus, vc sempre deverá ativar esse virtualenv antes e rodar o comando para iniciar. Se quiser desativar, o comando é “deactivate”

cd samples
./make.sh

OBS: Observe possíveis mensagens de erro como por exemplo o problema do GLEW. Deve compilar tudo com sucesso, se faltar algo, verifique os erros e instale possíveis dependências.

  • Volte para o diretório LinusTrinus e rode o main.py para iniciar o LinusTrinus:
cd .. #(lembre-se que vc compilou o make.sh dentro do diretório samples, volte um nível)
python3 main.py

Isso vai iniciar o LinusTrinus no terminal. para sair é Ctrl+C duas vezes… mas mantenha esse terminal rodando enquanto quiser usar o VR.

  • Crie links simbólicos para getcap e setcap: Para o SteamVR funcionar corretamente, ele procura os comandos /usr/bin/getcap e /usr/bin/setcap, mas no openSUSE estão em /sbin/getcap e /sbin/setcap. O comando para isso é:
ln -s /sbin/getcap /usr/bin/
ln -s /sbin/setcap /usr/bin/

OBS: executar como root obviamente

  • Outra coisa importante: a comunicação do celular com o computador apesar de ser via cabo USB, está no modo Tethering, ou seja, o computador vai usar o cabo USB como se fosse um cabo de rede direto no celular. E aparentemente a porta usada pelo TrinusVR é a porta 7777. Libere essa porta no Firewall do openSUSE ou, se só quiser testar rapidinho, pare o serviço firewalld para que seu computador não barre a conexão com o celular. service firewalld stop deve ser suficiente. O ideal é você liberar a porta no firewall para manter a segurança.
  • Inicie o app Trinus CBVR Lite no celular e mande conectar, a tela deve ficar preta e o terminal onde está rodando o main.py deve aparecer algumas informações. Se não estiver preta, possivelmente pode ser o firewall bloqueando a comunicação.
  • Repassando então: Depois de tudo configurado, o que deve ser feito a partir de agora antes de começar a usar o SteamVR (sempre):
  1. Telefone conectado no USB
  2. Modo Tethering USB ativado no celular
  3. Conexão “de rede” com o celular ativada
  4. App Trinus CBVR Lite rodando no celular, conectado (fica com tela preta, se não tiver, liberar no firewall do Linux)
  • Inicie o SteamVR. Na primeira vez, ele deve pedir poderes de root para poder terminar a instalação. Caso dê algum erro, ele informará e o log fica em /tmp/SteamVRLauncherSetup.log. Foi assim lendo o log que descobri o problema do getcap e do setcap, resolvido com a sugestão de https://github.com/ValveSoftware/SteamVR-for-Linux/issues/213
  • O computador irá mostrar um retângulo que é um espelhamento do que deve estar aparecendo no celular… Se estiver tudo preto, movimente o celular pois provavelmente o giroscópio está indicando que está olhando para baixo. Se deu tudo certo, movimente o celular em vários ângulos.

Bom, por enquanto, foi aqui que parei, não testei com nenhum jogo ainda pois não tinha controle configurado e ainda não tenho meu suporte, vou encomendar um para brincar.

Capturas de tela: Acima como o computador fica: Steam rodando, um retângulo que representa a imagem que deve aparecer no celular (celular olhando para o horizonte) Aqui exemplo do que aparece na tela do celular. Mova o celular para o giroscópio mudar a tela

tutoriais/vr_no_linux_com_celular.txt · Last modified: 2022-07-08 17:20 by alopes

Except where otherwise noted, content on this wiki is licensed under the following license: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki