Cursos e Bibliotecas Ver Mais

Galeria 3D1 Ver Mais

Gui Silva   cotia - SP
godon2004   Taboao da Serra - SP
jimmy ribas   curitiba pr - PR
Designer RS   Bento Gonçalves - RS - RS
César Augusto   São Paulo - Itapevi - SP

Portfólios Ver Mais

J3D   Saúde - AC
marcomaquetes   Santos, SP - SP
efeito3d   São José dos Campos - SP
Jean Belegante   curitiba - PR

Game Splah - Criar um atraso antes de abrir o jogo

Por: SERPA  

Em: 25/03/2021 12:30

Como eu programo um atrazo antes do início do jogo/apresentação.

Minha tela "Splashscreen" aparece e logo em seguida some e o level e carregado.

Como programar um delay?

A propósito. Favor corrigir o título do tópico, escrevi splash errado.
No UE4 vc diz? Tem um node (de blueprint) q se chama "delay", aí vc põe esse delay entre o aparecimento da imagem e o inicio do jogo...

Tem um outro node q se chama 'is input key down' q retorna um booleano (se uma tecla foi ou não apertada), q aí vc pode fazer tipo aquelas coisas de apertar qualquer botão pra continuar, etc.. 
A Beleza está entre a Ética e a Razão!..
Eu já havia tentado com esse node mas não sei o que fiz de errado que não funcionou.

Ontem estava vendo um vídeo no youtube onde o camarada ensina a disparar um movie de apresentação antes de entrar o jogo. Lá em configurações do projeto, aba movies.

Neste caso vai ser até melhor pois posso apresentar mais informações.

Vou tentar aqui.

Por enquanto ainda estou pisando em ovos nessa questão de blueprint e enquanto eu puder fazer sem ela melhor.

Pois ainda estou bem iniciante na ferramenta, rsrs.

Engraçado que eu já deveria estar acostumado com nodes e de certa forma até estou, pois tem o slate material do max, os nodes do grasshopper, onde eu costumo brincar um bocado.

Sei que depois de algum tempo eu vou estar até rindo deste meu receio inicial e arrependido de não ter encarado antes, como eu comentei com o André.

Para pra pensar. Estou encarando uma pandemia mundial e com medinho de nodes de UNREAL? Fala sério né.





Resolvi com o recurso de movie. Mas na verdade eu estava fazendo uma barbeiragem na hora de reproduzir/simular o game.

Tanto que mandei fazer agora com o movie e deu o mesmo resultado, apesar de eu ter colocado 10 segundos o movie não rolou esse tempo. Descobri que era a forma como eu estava acionando o game lá na viewport.

Eu deveria clicar em Reproduzir e escolher Standalone game.

Estava indo por outro caminho.

Valeu pela ajuda e a paciência de todos.

Sabe como é né, é como eu falei, sou bem iniciante mesmo. Café com leite, como se diz aqui no RJ. E no meu caso é café pingado, rsrs.

Vocês claro, vão sempre partir do princípio de que eu sei pelo menos o mínimo.

Vou dar um exemplo.

É tipo o técnico de TI ensinando para usuário via telefone, como ele deve fazer para trocar de impressora default no windows.

Ai ensina todos os passos certinho o usuário faz e responde: Blz, consegui, obrigado!

10 segundos depois ele liga novamente e diz: Agora está aparecendo uma mensagem aqui dizendo: "Printer is out of paper", antes não aparecia isso, o que que eu faço?


Calma! Assim sim, mas assim tbm não né, rsrs. Nâo sou tão abestado. rsrs

abraço
Acho q tem um estranhamento inicial mesmo, ante a vastidão de possibilidades. Isso é normal... O 3ds tbm é bastante intimidatório de inicio xd... Vai vendo alguns tutoriais q vc pega...

Um exercicio q acho q deve ser bom pra vc, seria por exemplo ver varios videos sobre criação de personagem de primeira pessoa (tem bastante mesmo desses no yt), e alguns sobre detecção de colisão (sphere colision por exemplo), pra fazer uma coisa tipo assim olha:

-Cria um personagem tipico de primeira pessoa com a movimentação e pulo, etc (só isso já é um exercicio de relevância...)...
-(No caso aí, como é passeio arquitetônico, n vai precisar de model nenhum (pro personagem, pode fazer como se fosse um fantasma msm XD), aí c vc quiser fazer coisas como uma mão aparecendo qdo for interagir com as coisas, aí é 'outros 500', aí vc pensa nisso depois tbm se quiser e tal...)
-Configura os inputs pra ter tbm um chamado "Interagir" ou um nome parecido...
-Faz os inputs tbm pra controle ("joystick", eu recomendo o controle do Xbox 1 S q é Bluetooth (apesar q eu gostava bastante do controle do Xbox 360, só q esse tinha q ter um receptor q é super raro de achar (e eu dei o meu pro meu irmãozinho XD))) q como vai ter poucas ações, é viável e facil de pensar, e tbm evoca uma certa ludicidade no usuário, o que facilita à 'Imersão' no ambiente virtual...isso é relevante por motivos q no final do texto eu comento... 
-Faz no 3ds mesmo um mockup de uma 'casa' ou qualquer 'interior arquitetônico' e tal, SÓ as paredes e chão (e teto hehe... to falando só a arquitetura mesmo, com os buracos pras coisas (portas, janelas, etc..)...
-Faz uma coisa simples mesmo, ou, se vc quiser, faz um corredor com varias portas e cada sala vc testa uma coisa diferente heheheh (isso é 'classico' de se fazer XD)... 
-Nesse model, faz o vão das portas (e janelas, etc..) meio 'padrão' (leia-se: 'do tamanho pra casar certinho com as suas portas e janelas e etc..') e tal... :3..
-Faz um model de porta, com o batente, só q dois objetos separados a porta e o batente, note q os dois tem q ter o pivot no lugar correto pra porta girar, e no mesmo lugar, pra importar certinho em cima (e, como o batente n vai girar tbm, n tem problema deixar no mesmo lugar q o da porta (q vai girar XD...)) e evidentemente tbm pra porta girar certinho sem ter q fazer gambiarra na engine...
-Ou, uma janela de correr (com todas as parada lá de borda ao redor (onde a janela 'corre'), tem um nome arquitetônico bonito pra essas coisas, mas eu sou psicologo então esqueci disso hehe...), é a mesma coisa q a porta, a diferença é a q porta vai girar e a janela de correr vai se mover... mas o método e o conceito são, basicamente, os mesmos...
-No editor do UE4, depois de ter importado os models (e feito os materiais deles, e separados essas coisas certinho nos diretorios e ter nomeado tudo de uma maneira coerente tbm (=D)) vc cria um 'ator' da "porta" (ou janela, etc..).. q vc põe o nome de 'porta' msm (ou janela, ou se vc tiver varias portas, chama de algo como 'Porta_Interiores_X' e tal...)
-No ator 'Porta', põe o model da porta e o model do batente, na mesma coordenada (geralmente "zerinho" (0,0,0)), e deixa a porta como 'filho' (dependente) hierarquico do batente. 
-Ainda no ator 'Porta', cria um volume de detecção de colisão (uma esfera, mas acho q talvez um box até seria mais simples..)  e posiciona esse box (esse volume) na porta e com uma grossura q vc ache boa (a idéia é q, quando tiver colisão (ou intersecção) entre a 'colisão' do personagem e esse volume, e o usuario apertar a tecla (ou botão no caso de controle de xBox) de "Interagir", a porta vai abrir (ou, se tiver aberta, vai fechar) e tal...)...
-Ainda no ator 'Porta' (ou janela, etc.. no caso da janela é a mesma coisa só q ao invés de girar c vai mover...) , vc tem q criar uma variavel (um 'booleano', q é, resumidamente "sim ou não" ou "1 ou 0" e tal... se chama de "booleano" por causa de um cara fodão lá da lógica e matemática, q o sobrenome dele era Boole..) chamada, por exemplo "oPlayerTaPerto" (ou outro nome q vc imaginar na hora.. q nem esse q eu imaginei na hora aqui tbm..)..Delxa ela em 0 como padrão.
-Cria tbm outra variavel do tipo booleano, chamada (por exemplo) "aPortaTaAberta". e deixa essa em 0 (falso) como padrão tbm (ou em verdadeiro caso a porta começe ja aberta, etc...)... 
-Derivando do volume de colisão lá do ator 'Porta' (isso ainda dentro do ator 'Porta'..), (vc clica e arrasta o nome la do volume pra area do blueprint, pra fazer uma referência), tem um node pra quando começa o overlap (entre a colisão do personagem e do ator 'Porta'), acho q chama "Component Begin Overlap", é um node de execução (ou seja, depois dele vão estar as coisas q vão acontecer quando a colisão do player começar a fazer intersecção com a colisão do box lá q vc pos)...
-A unica coisa que vai ser feita, nesse Begin Overlap, é q a variavel "oPlayerTaPerto" vai ser mudada pra "True" ou "Verdadeiro" ou "1" (:3)...
-Tbm derivando do node do volume de colisão, chama um node chamado "Component End Overlap", e a unica coisa q vai ser feita desse aí é q a variavel "oPlayerTaPerto" vai ser mudada pra "Falso" (ou "0", etc..)...
-Então (ainda no ator "porta" e tal), vc tem q criar um node de execução pro "Interagir" q vc tinha definidos nos inputs e tal..
-Desse node a 'linha lá' (de execução de comandos xd (a linha branca)) vai pra um "Branch" (se vc segurar 'B' e clicar no campo de edição lá do blueprint já aparece esse node, de tão ubíquo q ele é..), põe um 'Branch' ali e liga da (saída da) execução do input lá "Interagir" pra esse branch... o 'Branch' aí nos blueprint do UE4 é (literalmente) o mesmo q um "If" ("se") e "Else" ("em outro caso") na programação... 
- Nesse branch, na entrada de condição (a vermelha), vc põe o (a variavel) "oPlayerTaPerto" (ou seja, o que saír do 'True' do Branch, vai ser feito UNICAMENTE quando "oPlayerTaPerto" (q tá sendo definido por aqueles comandos usando um box de colisão, etc...) for "Verdadeiro"...) 
- Saíndo desse branch, do false n sai nada, do true vai pra outro branch (e, se vc fosse por ícones clicáveis 3d por exemplo, esse seria o momento deles aparecerem), só q nesse a condição vai ser a variavel (booleano) "aPortaTaAberta" (isso vai fazer a porta abrir se tiver fechada, e fechar, se tiver aberta...). 
-Crie um node chamado "Timeline" (isso faz tipo animações de parametros no ue4 e tal..).. o update do timeline vc liga num node pra girar o componente porta (não o batente), e o valor (na timeline) vai ser uma animação do valor da rotação (imagino q em Z) do componente 'porta', começando com ele fechado e terminando com ele aberto... 
-E então naquele ultimo Branch (o q a condição é "aPortaTaAberta") do "false" vc liga pro "Reverse From End" do Timeline... isso vai fazer com q, caso a porta esteja aberta, se vc "interagir" com a porta, ela fecha (e vice-versa tbm e tal, se a porta tiver fechada e vc interagir ela abre, etc...)...

Acho q esse bang da porta abrir e fechar é um exercicio bom (depois de ter pegado legal, faz umas gavetas, ou as portas com maçanetas q giram, e só interagem se vc clicar num icone (q ficaria em cima da maçaneta no caso da porta, ou em cima do puxador no caso de gaveta, etc..) q só aparece se o player estiver perto, etc...), só vc ir vendo varios tutos aí q c pega a manha relativamente rapido e tal... 

Eu ia falar mais coisa mas esqueci.. mas acho q é mais ou menos isso aí mesmo :)


@edit: Ah é.. depois de abrir a porta, tem q definir a variavel "aPortaTaAberta" como 'true' ("Verdadeiro" ou 1), e depois de terminar de fechar a porta de volta tem q definir a variavel "aPortaTaAberta" como 'false'...

@edit2: Ah é.. tem q pegar a rotação local da porta antes de aplicar o giro da timeline, e então adicionar o giro à porta, etc.. etc...

@edit3: Ah é, uma boa maneira de entender os "booleanos" mais basicos é vc pensar nessas variaveis como uma frase terminando com ponto de interrogação, por exemplo, dessas aí q eu mencionei do exemplo, tem essas "questões de relevância" pro ator lá... O Player tá perto?.. A Porta tá Aberta?.. etc.. xd... 
A Beleza está entre a Ética e a Razão!..
Oi Serpa, tudo bem?

Quando li sua primeira mensagem pensei que estava falando da tela que pode colocar enquanto o EXE está sendo lido pelo Windows, igual a tela de abertura do 3ds max, por exemplo.

Essa você não tem controle do tempo, pois depende do tempo que o PC leva para carregar o EXE e as dependências dele na memória.

Agora, depois que abriu a aplicação interativa, você pode fazer tudo que quiser, pode exibir a tela que quiser, a imagem que quiser, vídeo ou mesmo animação 3D.
 
Justamente por isso que pode não valer a pena colocar um vídeo AVI de verdade se for o vídeo de uma animação 3D, já que é um arquivo pesado e você pode exibir a própria animação 3D em tempo real na tela em vez do vídeo.

Se for um vídeo de um lugar real gravado com câmera real, tudo bem, mas se for um vídeo gerado por uma animação no Unreal, é melhor exibir a própria animação, é o que chamam de Cinematic.

Desta forma você pode até dar o controle da câmera para o espectador enquanto roda a animação, então, a pessoa pode ver do ângulo que quiser, coisa que seria impossível num vídeo.

Você também pode adicionar teclas para continuar ou pular a abertura, por exemplo, como já te disse você pode fazer tudo que imaginar e o que não imaginar também. rsrsrsrs

OBS: O Delay é um Node que adia uma ação, ou seja, você programa para algo acontecer tantos segundos depois que o fluxo da informação passar pelo Node, então, não serve para dar tempo para o vídeo carregar antes de tocar.
Para isso você precisa habilitar a opção Precache File no Meida Source, o arquivo que você usa para carregar o vídeo no Unreal, como mostra a imagem em anexo.
Desta forma ele vai fazer um Cache do vídeo antes de tocar para não dar soco ou travar.

Sobre o medo dos Nodes no Unreal, realmente não tem motivo se você brinca bem no Grasshopper, já o Slate do Max não tem muito haver com os Blueprints e nem mesmo com o Material Editor do Unreal, estão em níveis diferentes, a não ser que trabalhe com OSL no Slate, dai fica um pouco mais parecido.
O mais importante para pegar o jeito dos Nodes no Unreal é exercitar a lógica no fluxo das informações.
Você precisa pensar bem no que quer fazer, quais informações precisa coletar para fazer o que deseja e que tipo de processamento precisa realizar para obter o que deseja.
Planejando bem isso e conhecendo alguns Nodes essenciais, você faz praticamente tudo que imaginar.

Abração e tudo de bom.

André Vieira
ScreamingFox,

Obrigado pelas sugestões de assistir aos vídeos no youtube, mas atualmente estou sem internet, apencas com pacotes de dados.
Mãos interagindo, não penso nisso nem tão cedo, rsrs. Pode ser só o invvisível mesmo e já tá de bom tamanho.
Mais tarde o que vou querer aprender é mudar a cor dos objetos, tipo, apontando o mouse na direção da parede e ao apertar o botão ele abrir uma mini janela com algumas opções de textura para a pessoa escolher. Mas só mais pra frente.
Porta girar. Isso é outra coisa que vou querer aprender, mas uma coisa de cada vez. Por enquanto estou mais focado em resolver os problemas de texturização (principalmente o ladrilhamento).
Já consegui até a montar o movie onde eu assumi o controle do personagem via controle do xbox 360 e sai andando pela cena e o unral gravando a cena toda. WOW! achei isso o máximo.
Mas quem disse que consegui repetir a façanha. Anotou? Não??? Então tem mais é que se fu%$ lascar mesmo. kkk
Depois eu volto e faço de novo, sou tinhoso.
Interessante essas dicas de porta ser filha do batente, essa separação entre esses elementos. Atualmente está tudo junto pq estou usando um fluxo de trabalho trazendo do Revit. Mas como eu falei, o mais importante no momento é resolver as questões de mapeamento que ainda apanho bastante.
Já apanhava no max, não seria diferente agora. Só mudou o espancador, rsrs. Mas estou anotando essas dicas.

André, obrigado mais uma vez.

Gosto deste forum por causa disso, a humildade e a vontade da galera em ajudar.

Já vi postagens em forums por ai onde o camarada fez uma pergunta e um arrogante lá respondeu: "Google.com". Pode isso Arnaldo?

Este tipo de resposta nem deveria ter passado pela moderação.

É por essas e outras que muitos forums sucumbem rapidamente.

Oi Serpa, tudo bem?

Sobre gravar o seu passeio pela cena no Unreal, pesquise sobre o Sequence Recorder, ele é a melhor forma de fazer isso, pois também é possível fazer com o Matinee, mas o Matinee é antigo e será completamente substituido pelo Sequencer.

A página da documentação do Unreal que explica como gravar o Game Play com o Sequencer é essa: https://docs.unrealengine.com/en-US/AnimatingObjects/Sequencer/HowTo/SequenceRecorder/index.html

Sobre mapeaento, não conheço o Revit, mas creio que ele não tem recursos para editar o mapeamento dentro da área do UV e definir os canais de mapeamento, então, apesar de ser possível enviar direto do Revit para o Unreal, eu sugiro que passe antes por qualquer programa 3D para otimizar os Meshes, aplicar mapeamento automático mesmo e definir os Material IDs.
É só estas três coisas que precisa fazer para não ter problema com os objetos no Unreal.

Apenas para dar um exemplo simples, se você criar uma parede bem longa igual um muro e o Revit aplicar mapeamento de 1x1 vai distorcer todas as texturas que colocar na parede, mas se ele aplicar algum Unwrap automático, qualquer textura aplicada na parede ficará em baixa resolução, vai ter que usar textura de 8K ou ladrilhar bastante texturas menores para ficar adequado.
O mapeamento é a coisa mais importante do mundo nos Engines, caso contrário, terá que criar um material para cada objeto da cena devido ao mapeamento de cada um, já que no Engine você não tem recursos para editar o mapeamento igual nos Softs 3D, então, tem que levar com um bom mapeamento e se possível com todos tendo o mesmo tamanho, que chamam de Texel Density.

Sugiro com veemência que você estude um pouco do Unwrap UVW do 3ds max, é coisa de dois dias e nunca mais vai ter problemas com isso, pode acreditar e pode me xingar se não for verdade!!!
Qualquer mínima dúvida que tiver sobre o Unwrap é só falar que te respondo com o maior prazer.

Fico feliz de saber que gosta do fórum e eu agradeço sinceramente pela sua participação.

Abração e tudo de bom.

André Vieira

Faça o login para poder comentar

Usuários conectados

Total de mensagens publicadas pelos membros da comunidade: 711008.

Total de membros registrados: 138482

Últimos membros registrados: isaque.220798, Anezio.neto, DANILO COSTA , frapsxiv, naej2077, Estéfanem.melo, Paiyne, neziqhoue.

Usuário(s) on-line na última hora: 938, sendo 26 membro(s) e 912 visitante(s).

Membro(s) on-line na última hora: Henrique Ribeiro, gilson antunes, Pedro Juliato, nandao, Carlos E. Nogueira, Leonardo, Max Idalgo, billypaul, Frederico Wagner N. R., Reinaldo Silva, Duda, Jhio Design, wallanfcc, Eduardo Ramos, Renatto, Gabriel.C, Junior, Lisandro, mastermax, Baldo, magster, isaque.220798, Anezio.neto, Fernando Cunha, marcio.alain, Marco Rocha.

Legenda: Administrador, Especial, Moderador, Parceiro .

3D1 © Três D1 © 1999-2024. Todos direitos reservados.