前段时间学习了一下egret3d,然后有些奇妙的想法,如果用视频video来做纹理贴图可不可以呢?于是就尝试了一下,效果还不错。
思路也很简单,创建一个立方体,然后把立方的纹理设置成一个视频video,主要代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| public createGameScene() {
this.createVideoTexture();
this.loaderSkyBox(); } //创建视频纹理 private createVideoTexture() { this.video = new egret3d.VideoTexture(640,264); this.video.source = "resource/oceans-clip.mp4"; }
// 加载资源 private loaderSkyBox() { this.queueLoader = new egret3d.QueueLoader(); this.queueLoader.load("resource/background.jpg"); this.queueLoader.addEventListener(egret3d.LoaderEvent3D.LOADER_COMPLETE, this.onSkyBoxTexture, this); }
// 资源加载完成 创建立方体 private onSkyBoxTexture(e: egret3d.LoaderEvent3D) { // 设置背景 let panelIamge: egret3d.ITexture = this.queueLoader.getAsset("resource/background.jpg"); this.view.backImage = panelIamge;
// 创建立方体和cube贴图 this.ge = new egret3d.CubeGeometry(200, 200, 200); this.mat = new egret3d.TextureMaterial(panelIamge); this.mat.diffuseTexture = this.video;
this.mesh = new egret3d.Mesh(this.ge,this.mat); this.view.addChild3D(this.mesh);
// 更新摄像机信息 this.cameraCtl.distance = 1000; this.cameraCtl.rotationX = 45; this.cameraCtl.rotationY = 45;
this.cameraCtl.update(); }
|
效果->传送门
