O que é whitestorm.js?




Whitestorm.js


é uma estrutura para desenvolver
3D

aplicativos ou jogos que são executados no navegador. Essa estrutura é basicamente um invólucro em torno do
Three.js

biblioteca (como
jQuery

envoltórios
DOM

para facilitar o uso). Ele estende o Three.js

com API simples e sistema de componentes para tornar o desenvolvimento mais fácil e melhor. Ele usa
WebGL

para renderizar
3D

portanto, o aplicativo será executado mesmo em um smartphone ou tablet.



Exemplos

:
https://whs-dev.surge.sh/examples/




Há também alguns projetos interessantes feitos com o Three.js

já (showcase):



Ideia da estrutura WhitestormJS


Seu principal objetivo é combinar
3D

renderização com simulações de física em tempo real em um sistema simples e flexível
API

. Há alguns recursos principais que ele oferece:



  • Gráfico de cena baseado em componentes

  • Integrado
    física de alto desempenho

    com
    Worker


    (Multithreading)


  • Automatização

    da renderização

  • Aprimorado
    corpos moles


  • Baseado em ES2015



  • Webpack




    amigável


  • Integrado



    Três.js


    mecanismo de renderização


Mais recursos podem ser encontrados no projeto

LEIAME no github


.


Instalação


Existem vários métodos de instalação
whitestorm.js

. Vamos descrever o que está usando o

<script>


e a tag com
webpack

.


Incluindo o documento


A única coisa que o senhor deve fazer é adicionar
whitestorm.js

em seu documento usando a tag script. O senhor pode fazer download desse arquivo no site
pasta de compilação

.



<!-- WhitestormJS library -->
<script src="https://davidwalsh.name/whitestorm.js"></script>
<!-- App written in WhitestormJS -->
<script src="app.js"></script>


Isso é tudo. Agora o senhor pode escrever seu aplicativo com
whitestorm.js

em
app.js.


Webpack


Executar

npm install whs



.

Depois disso, o senhor deve adicionar o namespace WHS ao seu código.


import * as WHS from 'whs';

// ...


A próxima etapa é a configuração do Webpack.


plugins: [
  new webpack.NormalModuleReplacementPlugin(/inline\-worker/, 'webworkify-webpack')
  // ...
],


Isso deve ser feito somente se o senhor estiver usando a versão com física. O senhor pode encontrar mais informações sobre
variações de
whitestorm.js



e



Uso com o webpack


na documentação.


Uso


WHS.World


Agora é hora de fazer seu primeiro
whitestorm.js

aplicativo. A primeira coisa que o senhor deve fazer é
configurar o World objeto

. Ao fazer isso, o senhor faz várias coisas ao mesmo tempo
:


  • Configuração
    THREE.Scene

    (ou
    Physijs.Scene

    )

  • Crie uma câmera em perspectiva e adicione-a à cena

  • Definir a gravidade (se a física estiver ativada)

  • Aplicar plano de fundo e outras opções do renderizador

  • Defina o tamanho automático/estatísticas (adicionalmente)



const world = new WHS.World({
  autoresize: "window",
  stats: 'fps', // Statistics tool for developers.

  rendering: {
    background: {
      color: 0x162129
    }
  },

  gravity: [0, -100, 0], // Physic gravity.

  camera: {
    position: {
      z: 50
    }
  }
});



WHS.World: Inicializar cena, renderizador e câmera;


A tela WebGL será automaticamente adicionada ao
document.body node.
O senhor pode alterar o destino definindo um elemento DOM como container
do objeto de configuração que passamos para a função WHS.World.


WHS.Sphere


A próxima coisa a fazer é criar um simples sphere simples que cairá em um plano. Como já temos a cena, a câmera e o renderizador configurados, podemos começar a criar a esfera imediatamente. Para criar uma esfera simples, use o comando WHS.Sphere
. É um componente especial que envolve o
THREE.SphereGeometry
, malha e física.



Por padrão, se o senhor usar uma versão de física do whitestorm.js, todos os objetos serão criados como objetos de física. Se o usuário não quiser ter um objeto de física, basta adicionar
physics: false

à configuração da esfera.



// const world = ...

const sphere = new WHS.Sphere({ // Create sphere comonent.
  geometry: {
    radius: 3,
    widthSegments: 32,
    heightSegments: 32
  },

  mass: 10, // Mass of physics object.

  material: {
    color: 0xF2F2F2,
    kind: 'basic'
  },

  position: [0, 10, 0]
});

sphere.addTo(world); // Add sphere to world.



Agora, se o senhor abrir o documento, verá a esfera que cairá.


Links

Alex Buzin

Sobre Alex Buzin

Desenvolvedor front-end sênior. Vencedor da Intel ISEF 2016 em uma categoria de software. Autor e desenvolvedor do framework WhitestormJS. Jogador de hóquei. Experiência com javascript há mais de 6 anos.