Egret 3D 是白鹭引擎于2018年5月份推出的用于支持3D游戏开发的代码库。
您可以在 Examples 中查看示例源码,也可以在 Examples online 直接预览在线示例。
您可以在白鹭开发者中心查看 Egret 3D 的文档。
您可以在 GitHub Issues 中反馈您遇到的问题或建议。。
您可以在这里查看 Egret 3D 的后续计划。
open source 3d renderer for egret
Home Page: http://developer.egret.com/cn/docs/3d
Egret 3D 是白鹭引擎于2018年5月份推出的用于支持3D游戏开发的代码库。
您可以在 Examples 中查看示例源码,也可以在 Examples online 直接预览在线示例。
您可以在白鹭开发者中心查看 Egret 3D 的文档。
您可以在 GitHub Issues 中反馈您遇到的问题或建议。。
您可以在这里查看 Egret 3D 的后续计划。
当前5.3.2版本的引擎,paper创建的工程,将音频文件打包到资源组里面,资源文件比较多的时候,加载的时候,不知是音频加载出错还是其他问题,ios手机问题特别明显。
不知道是配置问题还是什么问题?
执行npm install cnpm -g
出现error,提升error信息为:
npm ERR! code EINVALIDTAGNAME
npm ERR! Invalid tag name "–g": Tags may not have any characters that encodeURIComponent encodes.
npm ERR! A complete log of this run can be found in:
导出一个带2段动画的角色预设,加载之后其Animation组件下的动画列表中只有一个GLTFArray,无法播放。
RT
鼠标与键盘抬起检测事件无效,按下检测正常
在paper生成的工程里面开发,3d模型在ios手机上出现模型不显示的情况。
是当下编辑用的是paper创建的工程,编译时查找的是18年的5.3.2的引擎库,是否因为实现相关不匹配造成的?还是ios手机下需要一些特殊的选项?
打扰了~
问题描述:在Unity环境中法线贴图如果Texture Type选择Normap map,会导出一张偏红的图片,在Egret3d引擎使用此图片时,光照方向不对。
临时解决方案:先在Unity中把Texture Type选择Default,然后导出会得到正确的图片。
完整解决方案:在Unity中Normal Map会被特殊转换一下,所以导出的时候应该也要特殊里。
说我那个工程文件夹 不是一个有效的 Egret 项目目录
正常一个3d场景资源封装,天空盒,离线渲染,rtt等?
新版的egret3d示例代码在哪儿?导出来一堆问题,懵懵懵
场景中有三级组件:空 gameObject parent0 > 空 gameObject parent1 > cube ;
步骤1,parent1 绕 -y 方向旋转 90度,此时 parent1 相对 parent0 旋转角度为 (0,-90,0)
步骤2,将 cube 的 parent 设为 parent0 ,cube.setParent(parent0, true) ,此时 cube 相对 parent0 旋转角度为(0,0,0),cube 相对世界旋转角度为(0,-90,0),此处相对世界旋转角度似乎是无效的。
在 unity3d 中,步骤2 之后 cube 相对 parent0 旋转角度为 (0,-90,0) 这应该才是合理的结果,或者是预期的结果。
我想了多种办法,但都无法解决这个问题,我把 parent1 相对 parent0 的旋转角度 应用到 cube 上,但多次旋转时,会出现旋转顺序不匹配的问题:比如 先 -y 旋转 90度,再 x 旋转 90度,最终的结果是 先 x 旋转 90度,再 -y 旋转 90度,这也不是预期的结果。旋转顺序是随机的。
我看了 setParent(value, worldPositionStays) 源码,但是没看到影响旋转角度的代码在哪,望指点。
谢谢!
5.3.2的egret游戏引擎,对于骨骼蒙皮动画支持不很好啊,同样的模型在layabox,babylon等引擎,在ios浏览器下都能正常显示,而在egret3d中就无法显示,上次官方技术说骨骼数量限制问题,同样的硬件跟运行环境别人可以,egret3d不行,这下一个版本是修复还是就只能27个以内,如果是这样的引擎,那还我们只能转到别的3d的引擎做游戏了。
用键盘做每帧世界坐标坐标改变事件
用鼠标做每帧世界角度改变事件
单一操作键盘--没有问题
单一操作鼠标--没有问题
鼠标键盘同时操作:会导致坐标发生改变,视图方面物体也发生了转动,但无论视图内物体如何转动,打印获得该物体的世界角度不会改变.以至于无法在同时操作鼠标键盘时,使另一对象同步该物体角度.
目前 Egret3D 的内部版本在技术上实现了支持了微信小游戏,但是考虑到和 egret-target-wxgame 项目以及 egret-core 项目的一致性,这个功能还需要进行一些调整,预计在 0.9 版发布
按照
这个步骤安装完成egret3d后运行paper,提示 未找到paper-cli
behaviour.enabled = false.不能收到onDisable、onEnable。
提示egret.wxgame.HTMLInput is not a constructor
1、通过loadGroup加载一个通过unity导出的场景,需要先加载贴图,再加载材质,然后加载模型,最后加载场景描述文件,顺序不正确会导致解析出错。建议资源加载完成解析数据的时候如果相应的依赖资源没有加载,则先不加载,待loadScene的时候再处理一次依赖资源,或者别的方法使用加载解析更为灵活
2、由于1,现在每次修改场景,都需要手动去调整default.res.json里在的加载顺序。另外现在3D场景的文件类型太多,修改起来好麻烦,ResDepot里面还没有支持新的资源类型,管理起来非常费劲。是否可以考虑延用2D的加载类型,把解析类型放在文件头里面,方便统一管理资源。
3、vs开发,没有console.log的日志输出,这个还挺影响开发的
4、粒子系统现在没有prewarm。
版本都是最新的,操作步骤如下:
1,按教程 创建3D项目 第2节 创建并运行 Egret3D 项目 创建项目;
2,用wing打开并按提示配置文件,能够正常运行游戏;
3,发布微信小游戏,用3d项目 libs/egret.wxgame.js 替换 微信项目 egret.wxgame.js;
4,修改代码,我不知道理解的对不对,修改如下:
//egret.runEgret = runEgret;
egret3d.runEgret();
helloworld.run();
egret.updateAllScreens = updateAllScreens;
5,运行报错, weapp-adapter.js 631 行,var canvas = wx.createCanvas(); canvas 为 undefined ;
印象中大半个月前我有使用默认3D项目成功发布到微信小游戏。。
请教操作流程有没有问题?尤其是第4步修改代码对不对?
谢谢!
当 lightmap 导出贴图为 DX 5 时,在微信小游戏中,会有错误的表现(html 环境正常),修改为 DX 1 导出后则正常。
@WanderWang
https://github.com/egret-labs/egret3d/blob/master/egret3d/components/AudioSource3D/AudioSource3D.ts#L342-L365
PannerNode.prototype.setVelocity
方法已经被W3C
弃用
当前版本的Chrome
根本不支持此方法,建议删除/或做容错处理
,避免开发者误用。
https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/setVelocity
听说一月迭代一次版本,等1.2完整教程一个月了,这月中旬能更新出来吗?
跪求
1、BoxCollider的aabb属性没有随着移动刷新
2、boundingSphere有大问题。半径数据看数值是个直径。还有其他的问题整理中。
3、onAwake里面加一行this.renderer.boundingSpherpherphere代码会导致模型尺寸异常
4、onAwake现在是initialize里面执行的。这时候拿不到参数。改成第一次onEnable之前执行应该就好了。其实组件的initialize就应该带参数,不然无法自定义组件了。
5、sendMessage里面的判断有误,改成component instanceof of of paper.Behaviour就好了
6、@paper.editor.propertpertperty(ty(ty(paper.editor.EditType.LIST, { , { , { listItems: s: s: paper.editor.getItemsFromEromEromEnum(um(um(egret3d.ColliderType)ype)ype) }),,paper会变成string类型的
使用5.3X 的引擎,在Main.ts 添加下面的代码:
export async function run() {
await RES.loadConfig("resource/default.res.json", "resource/");
await RES.loadGroup("preload");
paper.Application.sceneManager.createScene("defaultScene");
createGameUI();
}
function createGameUI() {
let gameObject = new paper.GameObject();
gameObject.name = "GameUI";
gameObject.addComponent(egret3d.Egret2DRenderer);
gameObject.addComponent(GameUIScript);
gameObject.layer = paper.Layer.UserLayer2;
}
class GameUIScript extends paper.Behaviour {
onStart() {
const renderer = this.gameObject.getComponent(egret3d.Egret2DRenderer);
const adapter = new egret3d.MatchWidthOrHeightAdapter();
adapter.setResolution(egret3d.stage.screenViewport.w, egret3d.stage.screenViewport.h);
renderer.screenAdapter = adapter;
let assetAdapter = new AssetAdapter();
egret.registerImplementation("eui.IAssetAdapter", assetAdapter);
egret.registerImplementation("eui.IThemeAdapter", new ThemeAdapter());
let theme = new eui.Theme("resource/2d/default.thm.json", renderer.stage);
theme.addEventListener(eui.UIEvent.COMPLETE, onThemeLoadComplete, this);
function onThemeLoadComplete() {
let textView : eui.EditableText = null;
textView = new eui.EditableText();
textView.x = 120;
textView.y = 320;
textView.text = "test";
renderer.root.addChild(textView);
}
}
onUpdate() {
}
}
上面的这个textView,被鼠标点上去以后,获得了focus,就会出错。
在egret.web.js里出错:HTML5StageText.htmlInput 是undefined
1、调用GameObject.destroy后出错
复现步骤
构建如下层级的GameObject对象
MainObj
- bg
- GeoLayer
- - geo
- - - Img
Camera
然后调用geo.destroy()即出错
2、把灯光egret3d.Light.enabled设为false不会关闭灯光
我把demo附件上传在这个贴子了http://bbs.egret.com/thread-49362-1-1.html
一个官方示例都没有。新手教程全是文字? 真的是差劲
导出场景模型多的话,在使用场景的时候,会有部分模型贴图丢失,但模型还在.
每次加载都是丢失的固定部分,估计是导出工具的错误.求修复
例如:
文件路径为Assets/Test/AssetsTest.json
执行egret bake 时在default.res.json中描述的路径是Assets/AssetsTest.json
此时加载会报错
导出小游戏工程后按照官方的修改后,还是无法运行起来,微信开发工具提示egret_native找不到。
环境:MacOS 10.13.6
Error: Cannot find module 'args'
at Function.Module._resolveFilename (module.js:547:15)
at Function.Module._load (module.js:474:25)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object. (C:\Users\caozhiyong.GT\AppData\Roaming\npm\node_modul
es@egret\paper-cli\cli\cli.js:4:14)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
我按照文档先安装了npm install @egret/paper-cli -g
然后执行这个paper create helloworld
然后就报错了,报错如下,我下载的是最新的版本
C:\Users\Administrator\AppData\Roaming\npm\node_modules@egret\paper-cli\out\ind
ex.js:138880
let {protocol} = url.parse(uri);
^
SyntaxError: Unexpected token {
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:373:25)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object. (C:\Users\Administrator\AppData\Roaming\npm\node_modul
es@egret\paper-cli\cli\cli.js:5:17)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
求助,还没开始就卡在这啦。。。
官方文档里有Egret3DCanvas,教程里也是这样教的,但是实际现在创建3d项目,加载3d库之后,找不到这个方法
如题,当前代码有实现鼠标选择,但是具体实现功能在那块,或者说当前系统有封装好的回调?
我在按照这里的说明步骤执行
https://mp.weixin.qq.com/s/2miD_tvDZski5dK32fWeKw
其中:
npm install cnpm –g 和 cnpm install @egret/paper-cli -g
paper create helloworld
都可以正常执行,但是下一步报错:
(在这之前我曾经手动下载安装了egret-core-5.3.x,但是即时我删除了已安装的引擎,再执行上面的语句也会失败,并且工程无法编译)
D:\Egret\test3d>paper install egret3d
SyntaxError: Unexpected token D in JSON at position 2
at JSON.parse ()
at Object. (C:\Users\Administrator\AppData\Roaming\npm\node_modules@egret\paper-cli\lib\install.js:77:35)
at step (C:\Users\Administrator\AppData\Roaming\npm\node_modules@egret\paper-cli\lib\install.js:32:23)
at Object.next (C:\Users\Administrator\AppData\Roaming\npm\node_modules@egret\paper-cli\lib\install.js:13:53)
at fulfilled (C:\Users\Administrator\AppData\Roaming\npm\node_modules@egret\paper-cli\lib\install.js:4:58)
at
请问是什么原因呢?
1、粒子使用Mobile AlphaBlended导出的特效完全就是白色快。并且和3D模型进行穿插时异常怪异
2、发布微信小游戏,安卓可以正常显示排行版,IOS则无法显示排行榜。
1、MainModule里面startColor不支持
2、RotationOverLifetime的AngularVelocity只支持Constant
3、Particles目录下的Shader支持不全,Multipy(Double)就不支持
4、paper还不能序列化和反序列化粒子组件
Cannot read property 'prototype' of undefined
TypeError: Cannot read property 'prototype' of undefined
问题
请问我该如何在3d中使用eui,内测版的3d编辑器有ui编辑功能吗?
创建新的3D项目中,加入water.shader.json,water_frag.glsl,water_vert.glsl文件,把文件路径修改后,
加载代码如下:
await RES.getResAsync("路径");
创建材质代码如下:
egret3d.Material.create(RES.getRes("路径"));
运行后报:egret3d.js:19279 缺少Uniform定义:modelMatrix错误,然后尝试用系统该定义好的
modelMatrix,modelViewMatrix,projectionMatrix,viewMatrix 都是提示没有定义
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.