Cannon.js

Cannon.js
Deweloperzy Stefana Hedmana
Wersja stabilna
0.6.2 / 28 marca 2015 ( 28.03.2015 )
Magazyn
Napisane w JavaScript
System operacyjny Niezależny od systemu operacyjnego
Typ Silnik fizyki 3D
Licencja Licencja MIT
Strona internetowa www .cannonjs .org

Cannon.js to silnik fizyki JavaScript 3D typu open source, stworzony przez Stefana „schteppe” Hedmana. W przeciwieństwie do bibliotek silnika fizycznego przeniesionych z C++ do JavaScript, cannon.js jest od początku napisany w JavaScript i może korzystać z jego funkcji. W porównaniu z Ammo.js z 2013 r. Cannon.js okazał się „bardziej zwarty, bardziej zrozumiały, wydajniejszy pod względem wydajności, a także łatwiejszy do zrozumienia”, ale nie miał tak wielu funkcji.

Cechy

Cannon.js obsługuje następujące kształty: kula, płaszczyzna, pudełko, walec, wielościan wypukły , cząstka i pole wysokości . Ta kolekcja kształtów jest zgodna z kolekcją używaną przez silniki renderujące, takie jak Three.js i Babylon , ale nie jest kompletna. Na przykład nie wystarczy X3DOM, aplikacja X3D , która umożliwia umieszczanie grafiki 3D na stronach internetowych bez potrzeby stosowania wtyczek .

Silnik fizyki implementuje dynamikę ciała sztywnego, dyskretne wykrywanie kolizji i narzędzie do rozwiązywania ograniczeń Gaussa-Seidela . Może wykonywać symulację tkaniny

Cannon.js może być używany z rendererami Three.js i Babylon.js WebGL do generowania scen 3D opartych na fizyce. Może być również używany do synchronizacji fizyki w sieci dla gier online dla wielu graczy za pomocą Lance.gg

Przykład

Poniższy przykładowy kod tworzy kulę na płaszczyźnie, przeprowadza symulację krok po kroku i drukuje symulację kuli w konsoli. Zauważ, że Cannon.js używa jednostek SI (metr, kilogram, sekunda itd.).


    
0 0  


    
    
     
     0 0  
     




    
     0 

    



      
   


 
 
  
      
            
       
  
    
    
 // Skonfiguruj nasz świat  var  world  =  new  CANNON  .  Świat  ();  świat  .  grawitacja  .  zestaw  (  ,  ,  -  9,82  );  // m/s²  // Utwórz kulę  var  radius  =  1  ;  // m  var  sphereBody  =  new  CANNON  .  Ciało  ({  masa  :  5  ,  // kg  pozycja  :  nowa  DZIAŁKA  .  Vec3  (  ,  ,  10  ),  // m  kształt  :  nowa  DZIAŁKA  .  Kula  (  promień  )  });  świat  .  dodaj Ciało  (  Ciało sfery  );  // Utwórz płaszczyznę  var  groundBody  =  new  CANNON  .  Ciało  ({  masa  :  // masa == 0 sprawia, że ​​ciało jest statyczne  });  var  groundShape  =  nowy  DZIAŁ  .  Samolot  ();  ziemiaCiało  .  addKształt  (  Kształt podłoża  );  świat  .  addBody  (  groundBody  );  var  ustalony krok czasu  =  1,0  /  60,0  ;  // sekundy  var  maxSubSteps  =  3  ;  // Uruchom pętlę symulacji  var  lastTime  ;  (  funkcja  simloop  (  czas  )  {  requestAnimationFrame  (  simloop  )  ;  if  (  lastTime  !  ==  undefined  )  {  var  dt  =  (  time  -  lastTime  )  /  1000  ;  world.step  (  fixedTimeStep  ,  dt  ,  maxSubSteps  );  }  console.log  (  "  Kula  z pozycja: "  +  ciało sfery  .  pozycja  .  z  );  lastTime  =  czas  ;  })(); 

Linki zewnętrzne