Last active
April 16, 2023 00:16
-
-
Save davidrios/1246e9c0289b56833a087ceca65306b1 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
3 | |
00:00:34,000 --> 00:00:37,000 | |
E aí, pessoal, bem-vindos de volta. | |
4 | |
00:00:37,000 --> 00:00:42,390 | |
O que você acabou de assistir foi uma simulação em tempo real de um motor de combustão interna | |
5 | |
00:00:42,390 --> 00:00:44,000 | |
que venho trabalhando nos últimos meses. | |
6 | |
00:00:44,000 --> 00:00:49,000 | |
Sempre fiquei bastante desapontado com a qualidade dos sons de motores de carros em jogos, | |
7 | |
00:00:49,000 --> 00:00:55,000 | |
e quando jogava no PlayStation 2 anos atrás, sem saber absolutamente nada sobre programação, | |
9 | |
00:00:55,000 --> 00:01:01,000 | |
muitas vezes me perguntava por que não era possível simular realisticamente o motor inteiro. | |
10 | |
00:01:01,000 --> 00:01:06,000 | |
Bom, decidi que era finalmente hora de responder a essa pergunta por conta própria. | |
11 | |
00:01:06,000 --> 00:01:11,000 | |
Aqui está um exemplo de um desses sons ruins de motor de carro. | |
13 | |
00:01:21,000 --> 00:01:26,000 | |
Eu sei que a maioria deles é otimizada para desempenho, então não espero que sejam perfeitos, | |
15 | |
00:01:26,000 --> 00:01:29,000 | |
mas ainda acho que podem ser melhorados. | |
16 | |
00:01:29,000 --> 00:01:32,000 | |
Mas o que exatamente os torna ruim em primeiro lugar? | |
17 | |
00:01:32,000 --> 00:01:36,000 | |
Bem, em primeiro lugar, motores têm sons diferentes em condições diferentes. | |
18 | |
00:01:36,000 --> 00:01:40,180 | |
Então, por exemplo, um motor vai soar diferente quando estiver ocioso em comparação com quando | |
19 | |
00:01:40,180 --> 00:01:43,000 | |
estiver sob carga pesada ou quando estiver desacelerando, | |
20 | |
00:01:43,000 --> 00:01:47,000 | |
e sinto que isso muitas vezes é ignorado em muitos desses jogos. | |
21 | |
00:01:47,000 --> 00:01:52,340 | |
Motores também possuem características de resposta não-linear, e o que quero dizer com isso é que | |
22 | |
00:01:52,340 --> 00:01:56,000 | |
o pedal do acelerador não dita a velocidade do motor, | |
23 | |
00:01:56,000 --> 00:01:59,000 | |
como pode ser o caso de motores elétricos. | |
24 | |
00:01:59,000 --> 00:02:04,000 | |
Ele simplesmente abre algumas placas do acelerador e permite que o motor escolha livremente sua própria velocidade, | |
26 | |
00:02:04,000 --> 00:02:08,000 | |
e isso é obviamente regulado pela quantidade de ar que entra no motor. | |
27 | |
00:02:08,000 --> 00:02:10,000 | |
Na vida real, isso se parece com isso: | |
29 | |
00:02:17,000 --> 00:02:20,000 | |
Observe como o motor pode levar algum tempo para reagir a essa entrada, | |
30 | |
00:02:20,000 --> 00:02:26,000 | |
e há muitos fatores complexos que dão a cada motor um caráter único. | |
31 | |
00:02:26,000 --> 00:02:31,000 | |
Meu objetivo com este projeto foi replicar toda essa complexidade em forma digital | |
32 | |
00:02:31,000 --> 00:02:36,000 | |
e criar um motor virtual com o qual posso interagir em tempo real. | |
33 | |
00:02:36,000 --> 00:02:38,000 | |
Então deixe-me explicar como isso funciona. | |
34 | |
00:02:38,000 --> 00:02:42,500 | |
A primeira coisa é um simulador de corpo rígido que simula todas as interações entre | |
35 | |
00:02:42,500 --> 00:02:44,000 | |
os componentes internos, | |
36 | |
00:02:44,000 --> 00:02:47,000 | |
como o virabrequim, as bielas e os pistões. | |
37 | |
00:02:47,000 --> 00:02:50,000 | |
Geralmente, isso é chamado de conjunto rotativo. | |
38 | |
00:02:50,000 --> 00:02:55,000 | |
Eu escrevi este motor de física alguns meses atrás, e fiz um vídeo sobre isso, se você estiver interessado. | |
40 | |
00:02:55,000 --> 00:02:59,000 | |
Agora, quero enfatizar que isso não é algum tipo de visualização. | |
41 | |
00:02:59,000 --> 00:03:03,000 | |
Isso é totalmente legítimo. É uma simulação de corpo rígido, | |
42 | |
00:03:03,000 --> 00:03:07,770 | |
e apenas para provar, posso remover algumas das ligações e, de repente, temos | |
43 | |
00:03:07,770 --> 00:03:09,000 | |
seja lá o que for isso. | |
44 | |
00:03:09,000 --> 00:03:14,000 | |
Então, em outras palavras, todas as forças entre as ligações, incluindo coisas como inércia | |
45 | |
00:03:14,000 --> 00:03:18,000 | |
e até mesmo o atrito deslizante entre as paredes do cilindro e os pistões, | |
46 | |
00:03:18,000 --> 00:03:21,000 | |
são levados em consideração nesta simulação. | |
47 | |
00:03:21,000 --> 00:03:25,000 | |
Também implementei uma simulação de fluidos fisicamente realista | |
48 | |
00:03:25,000 --> 00:03:29,000 | |
para lidar com o fluxo de ar entre os cilindros e as outras partes do motor. | |
49 | |
00:03:29,000 --> 00:03:36,000 | |
Tentei tomar o menor número de atalhos possível, então não há realmente nenhum truque ou artifício aqui. | |
51 | |
00:03:36,000 --> 00:03:41,380 | |
As moléculas de ar e a velocidade em massa desse ar são simuladas de maneira realista à medida que | |
52 | |
00:03:41,380 --> 00:03:43,000 | |
viajam pelo motor, | |
53 | |
00:03:43,000 --> 00:03:48,000 | |
e uma quantidade fisicamente precisa de energia é liberada quando o combustível é queimado. | |
54 | |
00:03:48,000 --> 00:03:53,000 | |
Até mesmo a velocidade de propagação da chama no cilindro é simulada com muita precisão. | |
55 | |
00:03:53,000 --> 00:03:59,000 | |
Toda essa simulação, aliás, tem que rodar em torno de 80.000 quadros por segundo para se manter estável, | |
57 | |
00:03:59,000 --> 00:04:02,000 | |
então teve que ser fortemente otimizada. | |
58 | |
00:04:02,000 --> 00:04:04,000 | |
E vou mostrar o que acontece se rodar mais devagar. | |
59 | |
00:04:04,000 --> 00:04:08,000 | |
Basicamente, seu motor simplesmente explodirá imediatamente na quarta dimensão. | |
60 | |
00:04:17,000 --> 00:04:22,000 | |
A onda de pressão criada no sistema de escape é enviada diretamente para uma thread separada | |
62 | |
00:04:22,000 --> 00:04:25,000 | |
que então a converte em um sinal de áudio. | |
63 | |
00:04:25,000 --> 00:04:30,000 | |
O sinal de áudio final consiste em um pouco de ruído branco simples, um pouco de equalização, | |
64 | |
00:04:30,000 --> 00:04:36,000 | |
e um filtro que aproxima o padrão de propagação do som dentro do sistema de escape. | |
65 | |
00:04:36,000 --> 00:04:40,080 | |
Aqui está uma demonstração começando com a onda de pressão base, que soa um pouco | |
66 | |
00:04:40,080 --> 00:04:42,000 | |
sem graça, | |
67 | |
00:04:42,000 --> 00:04:46,000 | |
e uma vez que todo o processamento adicional está lá, você pode ver que soa um pouco | |
68 | |
00:04:46,000 --> 00:04:47,000 | |
mais familiar. | |
79 | |
00:05:29,000 --> 00:05:42,000 | |
A simulação é tão precisa que pode prever curvas de potência com base | |
80 | |
00:05:42,000 --> 00:05:46,000 | |
em um conjunto de especificações do motor, geralmente dentro de 10%. | |
81 | |
00:05:46,000 --> 00:05:49,000 | |
E vou mostrar como isso funciona em um minuto. | |
82 | |
00:05:49,000 --> 00:05:53,000 | |
Essas especificações do motor são definidas em um script Piranha, onde você pode conectar | |
83 | |
00:05:53,000 --> 00:05:57,000 | |
vários componentes individuais para formar um motor completo. | |
84 | |
00:05:57,000 --> 00:06:02,000 | |
Piranha é minha própria linguagem de script personalizada que eu criei e uso em alguns | |
85 | |
00:06:02,000 --> 00:06:03,000 | |
dos meus outros projetos. | |
86 | |
00:06:03,000 --> 00:06:06,000 | |
Você pode aprender sobre ela em outros vídeos no meu canal. | |
87 | |
00:06:06,000 --> 00:06:09,000 | |
Certo, então vamos ver uma demonstração básica. | |
88 | |
00:06:09,000 --> 00:06:14,000 | |
Podemos começar com um motor padrão que você pode encontrar em um caminhão dos anos 70. | |
89 | |
00:06:14,000 --> 00:06:22,000 | |
Especificamente, este é um 454, que significa 454 polegadas cúbicas, ou 7,4 litros. | |
90 | |
00:06:22,000 --> 00:06:26,000 | |
Eu já montei um desses de verdade, então eu sei bastante sobre eles. | |
91 | |
00:06:26,000 --> 00:06:31,000 | |
Todos os parâmetros que coloco na simulação são baseados em dados do mundo real. | |
92 | |
00:06:31,000 --> 00:06:38,000 | |
Certo, primeiro vamos pressionar A para ligar a ignição e depois pressionar S para engatar o motor de arranque, | |
94 | |
00:06:38,000 --> 00:06:40,000 | |
assim como em um motor real. | |
96 | |
00:06:43,000 --> 00:06:47,000 | |
Pressionando várias teclas no teclado, posso abrir ou fechar o acelerador, | |
97 | |
00:06:47,000 --> 00:06:50,000 | |
o que é claro, faz o motor mudar de velocidade. | |
98 | |
00:06:50,000 --> 00:06:53,000 | |
Pressionando a tecla D, posso habilitar o dinamômetro, | |
99 | |
00:06:53,000 --> 00:06:57,000 | |
para que possamos medir o torque e a potência desse motor. | |
101 | |
00:07:16,000 --> 00:07:20,000 | |
Se procurarmos os números originais fornecidos pela GM em 1974, | |
102 | |
00:07:20,000 --> 00:07:25,000 | |
podemos ver que eles estão muito próximos dos valores previstos na simulação. | |
103 | |
00:07:25,000 --> 00:07:30,000 | |
Até as curvas são aproximadamente da mesma forma, com ambos o pico de torque e pico de potência | |
104 | |
00:07:30,000 --> 00:07:34,000 | |
acontecendo em uma velocidade do motor aproximadamente igual. | |
105 | |
00:07:34,000 --> 00:07:39,000 | |
Agora, apenas mudando as peças no motor, você pode realmente mudar a forma como ele soa. | |
107 | |
00:07:39,000 --> 00:07:44,000 | |
Então, se eu colocar algumas peças de alto desempenho em um comando de válvulas com um perfil de lóbulo ligeiramente | |
109 | |
00:07:44,000 --> 00:07:50,000 | |
diferente, você pode ver que o motor produz mais potência, mas também soa perceptivelmente diferente. | |
111 | |
00:07:50,000 --> 00:07:53,000 | |
Eu não mudei nenhuma das configurações de síntese de áudio. | |
112 | |
00:07:53,000 --> 00:07:57,000 | |
Isso é baseado apenas nos componentes internos do motor. | |
114 | |
00:08:07,000 --> 00:08:10,000 | |
Para ter uma melhor sensação da potência do motor, | |
115 | |
00:08:10,000 --> 00:08:16,000 | |
também implementei esta simulação de veículo com simulação de embreagem, transmissão e trem de força. | |
117 | |
00:08:16,000 --> 00:08:21,000 | |
Ela também aproxima a resistência ao rolamento do veículo, bem como a resistência do ar. | |
119 | |
00:08:38,000 --> 00:08:42,000 | |
Na minha opinião, a maior melhoria em relação a muitos dos modelos que já vi | |
120 | |
00:08:42,000 --> 00:08:45,000 | |
é o som da frenagem do motor, que é realmente muito bom. | |
121 | |
00:08:45,000 --> 00:08:50,000 | |
Então, a frenagem do motor, ou o excesso de rotação, é quando você faz o motor funcionar mais rápido do que deveria | |
122 | |
00:08:50,000 --> 00:08:52,000 | |
dada a posição do acelerador, | |
123 | |
00:08:52,000 --> 00:08:58,000 | |
o que produz um efeito de frenagem e você pode pensar nisso como uma potência negativa. | |
125 | |
00:08:58,000 --> 00:09:01,000 | |
E isso também muda perceptivelmente o tom do motor. | |
127 | |
00:09:27,000 --> 00:09:33,000 | |
Até agora neste vídeo, eu só mostrei motores V8, mas isso não é a única coisa que este simulador pode fazer. | |
129 | |
00:09:33,000 --> 00:09:39,000 | |
Na verdade, é completamente genérico, então você pode simular um V6, um quatro cilindros em linha, | |
130 | |
00:09:39,000 --> 00:09:45,000 | |
você até pode simular configurações de motor não padrão, como um V3, | |
131 | |
00:09:45,000 --> 00:09:49,000 | |
ou você poderia ter seis cilindros de um lado e quatro do outro. | |
132 | |
00:09:49,000 --> 00:09:53,000 | |
Realmente não importa. Ele pode lidar com praticamente qualquer coisa. | |
133 | |
00:09:53,000 --> 00:09:58,000 | |
Então se você tiver alguma ideia de motores específicos que quer que eu teste, por favor descreva-os nos comentários, | |
135 | |
00:09:58,000 --> 00:10:02,000 | |
e definitivamente farei um vídeo de acompanhamento deste. | |
136 | |
00:10:02,000 --> 00:10:09,000 | |
Apenas para provar que realmente funciona, entrei com os parâmetros deste motor V-twin Kohler, | |
138 | |
00:10:09,000 --> 00:10:14,000 | |
e você normalmente encontra eles em serrarias ou trituradores de madeira e outros equipamentos industriais. | |
140 | |
00:10:14,000 --> 00:10:19,410 | |
Tenho muita familiaridade com este motor em particular na vida real, e posso confirmar que a simulação produz | |
142 | |
00:10:20,000 --> 00:10:25,940 | |
uma replicação muito precisa do som, e os números de cavalos de potência são praticamente | |
143 | |
00:10:25,940 --> 00:10:28,000 | |
exatamente iguais aos da vida real. | |
152 | |
00:11:08,000 --> 00:11:12,790 | |
Agora, por mais que eu quisesse discutir todos os detalhes técnicos deste projeto, | |
153 | |
00:11:12,790 --> 00:11:16,000 | |
tem simplesmente muita coisa para cobrir em um único vídeo. | |
154 | |
00:11:16,000 --> 00:11:22,000 | |
Li literalmente livros inteiros ao pesquisar este assunto, e também li muitos artigos de pesquisa. | |
156 | |
00:11:22,000 --> 00:11:27,690 | |
Sinceramente, não tenho ideia se alguém se interessaria por esses detalhes, então por favor | |
157 | |
00:11:27,690 --> 00:11:29,000 | |
me avise se for o seu caso. | |
158 | |
00:11:29,000 --> 00:11:34,420 | |
Além disso, até o momento em que este vídeo foi lançado, o código está aberto no meu GitHub, então confira | |
159 | |
00:11:34,420 --> 00:11:36,000 | |
se você estiver interessado. | |
160 | |
00:11:36,000 --> 00:11:39,000 | |
O link está na descrição. | |
161 | |
00:11:39,000 --> 00:11:42,000 | |
Espero que tenham gostado do vídeo, e obrigado por assistir. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment