先来认识一下Babylonjs,由于基于webgl来开发,所以先介绍一下基础知识。

Webgl是一个html标准,他要在canvas元素上初始化。

Html页面上的准备

所以我们先从html页面开始看起

我们设置一个canvas,提供给babylon渲染用

然后因为我们用typescript,你可以看到引入的脚本叫app.js,但是在我么的项目里只有app.ts

生成的时候app.ts 会被编译为app.js

TypeScript代码

看,熟悉的class,比js的prototype看着舒服吧,看()=> 熟悉的"辣么大"表达式。

这段代码很好理解吧,window.onload 是页面初始化事件,在这里取得canvas,并用它初始化了Game

Game是我弄了个当主程序的东西,使用咱客户端过去的习惯。

Update 和 stop 其实都没写

Int里面初始化了 babylon engine

创建了一个场景,然后告诉babylonengine 开始渲染,渲染方法就是调用scene.render();

看看createScene函数都干了什么

这地方api设计有一点混乱,engine初始化就妖了canvas

Camera又要和canvas关联

这是先初始化场景、摄像机、灯光

// create a basic BJS Scene object

var scene = new BABYLON.Scene(this.engine);

// create a FreeCamera, and set its position to (x:0, y:5, z:-10)

var camera = new BABYLON.FreeCamera('camera1', new BABYLON.Vector3(0, 5, -10), scene);

// target the camera to scene origin

camera.setTarget(BABYLON.Vector3.Zero());

// attach the camera to the canvas

camera.attachControl(this.canvas, false);

// create a basic light, aiming 0,1,0 - meaning, to the sky

var light = new BABYLON.HemisphericLight('light1', new BABYLON.Vector3(0, 1, 0), scene);

然后给场景里面放俩物体

// create a built-in "sphere" shape; its constructor takes 5 params: name, width, depth, subdivisions, scene

var sphere = BABYLON.Mesh.CreateSphere('sphere1', 16, 2, scene);

// move the sphere upward 1/2 of its height

sphere.position.y = 1;

// create a built-in "ground" shape; its constructor takes the same 5 params as the sphere's one

var ground = BABYLON.Mesh.CreateGround('ground1', 6, 6, 2, scene);

一个球,一个平面

Babylon 为你准备了大量的基本形体

var box = BABYLON.Mesh.CreateBox("box", 1.0, scene);

box.position = new BABYLON.Vector3(3, 0, 0);

var plane = BABYLON.Mesh.CreatePlane("plane", 2.0, scene);

plane.position = new BABYLON.Vector3(2, 0, 1);

var cylinder = BABYLON.Mesh.CreateCylinder("cylinder", 3, 3, 3, 6, 1, scene, false);

cylinder.position = new BABYLON.Vector3(-2, 0, 1);

var torus = BABYLON.Mesh.CreateTorus("torus", 5, 1, 10, scene, false);

torus.position = new BABYLON.Vector3(-3, 0, 1);

var knot = BABYLON.Mesh.CreateTorusKnot("knot", 2, 0.5, 128, 64, 2, 3, scene);

knot.position.y = 3;

var lines = BABYLON.Mesh.CreateLines("lines", [

new BABYLON.Vector3(-10, 0, 0),

new BABYLON.Vector3(10, 0, 0),

new BABYLON.Vector3(0, 0, -10),

new BABYLON.Vector3(0, 0, 10)

], scene);

我们随便建立一批

这就是babylon引擎的基本初始化和形体

Web3DGame之路,Babylonjs 和TypeScript学习笔记(二)的更多相关文章

  1. Typescript 学习笔记二:数据类型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  2. Web3DGame之路,Babylonjs 和TypeScript学习笔记(一)

    一个开源的Webgl3D引擎,javascript or typescript http://www.babylonjs.com 啥是WebGL WebGL 网页图形库,简称WebGL,是一个JS库, ...

  3. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  4. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  5. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. Typescript 学习笔记四:回忆ES5 中的类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  7. Typescript 学习笔记三:函数

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  8. Typescript 学习笔记一:介绍、安装、编译

    前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...

  9. TypeScript学习笔记(八):1.5版本之后的模块和命名空间

    我之前有写过TS1.5版本之前的“模块”的笔记:TypeScript学习笔记(七):模块 但是TS这里的模块和在ECMAScript 2015里的模块(即JS原生支持了模块的概念)概率出现了混淆,所以 ...

随机推荐

  1. VS Code 配置Python

    1. 安装VS Code的Python插件,选择安装次数最多的那个 2. 点击用户设置菜单,在settings.json中添加 "python.pythonPath": " ...

  2. Error:Execution failed for task ':clean'. > Unable to delete directory :\build\intermediates (转)

    第一种方法: build文件夹,可以使用360文件粉碎机删除,然后重启Android Studio即可! 转自 第二种方法: 进入studio,进入settings,搜索instant run,进入该 ...

  3. mybatis Caused by: org.apache.ibatis.reflection.ReflectionException: Error instantiating class .. with invalid types () or values (). Cause: java.lang.NoSuchMethodException: ...<init>()

    如果有带参数的构造器,编译器不会自动生成无参构造器.当查询需要返回对象时,ORM框架用反射来调用对象的无参构造函数,所以会导致此类异常 public Test(){ }

  4. 让不支持h5新标签的浏览器支持新标签

    把这段js加到页面的头部就可以了,创建想让浏览器支持的标签即可 //条件判断是否支持 h5 if(window.applicationCache){ alert("支持h5") } ...

  5. 如何理解typedef void (*pfun)(void)

    问题: 在刚接触typedef void (*pfun)(void) 这个结构的时候,存在疑惑,为什么typedef后只有一"块"东西,而不是两"块"东西呢?那 ...

  6. 安装了VS2012 还有Update4 我的Silverlight5安装完后 我的Silverlight4项目打不开

    安装了VS2012 还有Update4  我的Silverlight5安装完后 我的Silverlight4项目打不开  求助 不知道是哪里出问题了 我的Silverlihgt4项目一直报错 无法打开 ...

  7. 读取hdfs文件之后repartition 避免数据倾斜

    场景一: api:  textFile("hfds://....").map((key,value)).reduceByKey(...).map(实际的业务计算逻辑) 场景:hdf ...

  8. Android 学习笔记之三—— 音效的使用

    在开发手电筒应用的处理音效的过程中,看网上使用的是MediaPlayer,因为音效一般都比较短,所以这里使用的是SoundPool,如下: SoundPool soundPool=new SoundP ...

  9. Day 1:开始重新学习

    离开很久,前几天翻出以前做过的程序居然还能正常运行.有一点后悔,为什么当初没有坚持做下去.Delphi园地前一阵也曾经宣布要关站,但仍然坚持过来了,在此向站长致敬!我也要重新开始! 附图:Delphi ...

  10. 使用VisualVM分析性能

    性能分析神器VisualVM VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量 ...