教 程 目 录
BabylonJS教程
BabylonJS 是用于使用HTML5和WEBGL构建3D游戏的JavaScript框架.It是一个开放的源框架,并在github上托管.BabylonJS的官方网站是 www.babylonjs.com .
受众
本教程专为希望以简单方便的方式学习BabylonJS基础知识及其编程概念的软件程序员而设计.本教程将通过合适的示例为您提供有关BabylonJS各种功能的充分理解.
先决条件
在继续本教程之前,您应该有一个基本的理解HTML,CSS,JavaScript和文档对象模型(DOM).
本文地址:https://www.itbaoku.cn/tutorial/babylonjs-index.html
相关问答
所以,我已经将搅拌机制作的场景加载到Babylonjs中,并且产生了一些有趣的效果.基本上,我试图将重力等应用于场景,将玩家移至其适当的位置,并使整个场景点亮和可见,但它们都没有起作用.这是脚本: var BABYLON; var canvas = document.getElementById('gamecanvas'); var engine = new BABYLON.Engine(canvas, true); var player_height = 2; var player_speed = 1; var player_inertia = 0.9; function INIT_GAME(){ BABYLON.SceneLoader.Load('Scenes/', 'zombie_map.babylon', engine, function(newScene){ var scene = newScene; var light = new BABYLON.PointLight('light', new BABYLON.Vector3(0,0,10), scene); var player = new BABYLON.FreeCamera('player', new BABYLON.Vector3(1,1,1),
)
我一直在尝试通过npm安装Babylonjs.我已经设置了一个新项目,并从npm init开始.之后,我根据他们的文档安装了Babylonjs. 现在,我创建了一个使用import * as BABYLON from 'babylonjs';导入其模块的JavaScript文件.当我打开控制台时,它给我带来了这个错误:Uncaught SyntaxError: Cannot use import statement outside a module. 由于我相对较新,因此我不太确定我是否错过了重要的一步.我不想使用他们的CDN,因为我无法一直访问互联网. 预先感谢! 解决方案 我建议使用ES6软件包,在使用ES6式导入时更适合. 这是文档: https://doc.babylonjs.coms.com/features/features/es6_s6_support
)
我觉得自己很近,但仍然缺少一些东西.这是我到目前为止的 var files = window.files; console.log(files) // => (3) [File, File, File] // File objects: // 0: File {correctName: 'test.bin', name: 'test.bin' …} // 1: File {correctName: 'test.gltf', name: 'test.gltf', …} // 2: File {correctName: 'test.png', name: 'teest.png', …} var fi = new BABYLON.FilesInput(engine, scene, (s) => { console.log('here in scene loaded callback'); }) fi.loadFiles({ dataTransfer: { files: asheFiles } }); 现场加载的回调从未被调用.我也看不到页面上的帆布元素呈现的任何内容. 我知道,根据他们在这里的示例,显然有一种方法: https://sandbox.babylonjs.com/ 我只是想弄清楚如何重新创建它. 解决方案 好的,我确实有解决方案.
)
所以我今天读了关于 babylonjs ,我被它吹走了.我正在努力弄清楚如何将整个3D场景加载到巴比伦中.我设法导出一个3D模型的蜘蛛侠,并有.babylon文件,但那么是什么?在文件中,它只排名 "从3D资产导入场景 Babylon.js可以从名为.babylon的文件格式加载场景.此文件格式基于JSON,并包含所有必需的数据以创建完整场景." 关于如何实现此目的的任何想法? 谢谢 解决方案 一旦您有一个.babylon文件,可以调用 sceneloader.load 功能: BABYLON.SceneLoader.Load("", "scene.babylon", engine, function (newScene) { }); Load函数需要以下参数: 场景文件夹(可以为空,使用与页面相同的文件夹) 场景文件名 对发动机的参考 一个回调给你加载的场景(在我的情况下,我使用这个回调来附加 相机到画布并启动我的渲染循环) 进度报告的回调 更多详细信息在这里: https://www.eternalcoding.com/?p=313
)
我正在研究巴比伦.项目.因此,我创建了一个测试模型(.Babylon),搅拌机(出口完美地工作而没有任何错误). 我的问题是:我的浏览器中的模型 1 2 babylon的模型 模型 将网格导入到我的巴比伦现场,我正在使用BABYLON.SceneLoader.ImportMesh. babylon.js似乎在某种程度上绕过边缘,我真的不明白 - 有很多完美模型的例子!我知道我正在做某事.非常错误,但我无法弄清楚它是什么......到目前为止我尝试了使用旧的搅拌机版本,重新安装导出-python-script和googling,如疯鼠.有没有人有想法我做错了什么? (我没有将任何修改器添加到Blender中的网格中) tl; dr :babylon.js的型号看起来很奇怪(尖锐的边缘是某种方式) - 使用搅拌机创建的. 解决方案 看起来表面法线是平均的,使得着色器内插单个多边形并使形状看起来更光滑.我不确定它是否是搅拌机导出或造成它的巴比伦材料.如果您比较剪影,则实际几何形状是相同的.请记住,经常希望具有这种效果,特别是对于有机模型. 如果您不熟悉正常,请看看 http://www.scrackapixel.com/lessons/3d-basic-reendering/introduction-to-to-shading/shading-no
)
我正在服务器端读取图像并通过 AJAX 调用推送到 Web 浏览器.我有一个要求,我必须使用 WebGL 逐行渲染它们. 例如:图像是 640X480,其中 640 是宽度,480 是高度.现在总像素数将是 640*480 = 307200 像素.因此,我想使用 WebGL 在循环中以 640(总宽度)间隔渲染整个图像. 现在我在 webgl 中有 texture2D(据我所知)可以这样做,但不知道从哪里开始.我也有 ArrayBuffer,唯一的事情是使用 Texture2D,我想逐行缓慢地渲染它. 如果它们满足要求,我已经准备好使用任何 js 库.因此,要逐行编写图像,我们可以这样做. 顶点着色器 attribute vec2 a_position;? attribute vec2 a_texCoord;? void main() { ??? } 片段着色器 #ifdef GL_ES precision mediump float; #endif uniform float time; uniform vec2 mouse; uniform vec2 resolution; void main( void ) { vec2 position = 1.0 - gl_FragCoord.xy / resolution;
)