当前位置: 首页 > article >正文

LayaBox1.8.4实现自定义3DMesh

实现mesh的原理可参考我写的Unity中的自定义mesh的原理,

碰撞检测算法——分离轴算法在Unity中实现(一)_unity 自定义高性能碰撞检测方案-CSDN博客

实现可传入shader两张贴图的顶点声明如下:

	var vertexDeclaration=Laya.VertexPositionNormalTexture0Texture1.vertexDeclaration;

默认的顶点声明如下:

	var vertexDeclaration=VertexPositionNormalTexture.vertexDeclaration;

实现代码:

var CustomMesh=(function(_super){
	function CustomMesh(long,width){
		/**@private */
		this._long=NaN;
		/**@private */
		this._width=NaN;
		(long===void 0)&& (long=1);
		(width===void 0)&& (width=1);
		RoadMesh.__super.call(this);
		this._long=long;
		this._width=width;
		this.activeResource();
		this._positions=this._getPositions();
		this._generateBoundingObject();
	}

	Laya.class(CustomMesh,'laya.d3.resource.models.CustomMesh',_super);
	var __proto=RoadMesh.prototype;
	__proto.recreateResource=function(){
		this._numberVertices=4;
		this._numberIndices=6;
		var vertexDeclaration=Laya.VertexPositionNormalTexture0Texture1.vertexDeclaration;
		var vertexFloatStride=vertexDeclaration.vertexStride / 4;
        
		var vertices=new Float32Array([
		0,0,0,0,0,1,0,0,0,0,
        this._width,0,0,0,0,1,1,0,1,0,
        0,0,this._long,0,0,1,0,1,0,1,
        this._width,0,this._long,0,0,1,1,1,1,1]);
		
        var indices=new Uint16Array([
		0,1,2,3,2,1,]);

		this._vertexBuffer=new Laya.VertexBuffer3D(vertexDeclaration,this._numberVertices,/*laya.webgl.WebGLContext.STATIC_DRAW*/0x88E4,true);
		this._indexBuffer=new Laya.IndexBuffer3D(/*laya.d3.graphics.IndexBuffer3D.INDEXTYPE_USHORT*/"ushort",this._numberIndices,/*laya.webgl.WebGLContext.STATIC_DRAW*/0x88E4,true);
		this._vertexBuffer.setData(vertices);
		this._indexBuffer.setData(indices);
		this.memorySize=(this._vertexBuffer._byteLength+this._indexBuffer._byteLength)*2;
		this.completeCreate();
	}

	return CustomMesh;
})(Laya.PrimitiveMesh)


http://www.kler.cn/a/409554.html

相关文章:

  • 一个全面的Vue 3组件通信演示展示
  • OpenCV、YOLO、VOC、COCO之间的关系和区别
  • DataGear 5.2.0 发布,数据可视化分析平台
  • 12-表的约束
  • 深度学习之目标检测的常用标注工具
  • leetcode day13 贪心 45+55
  • PyOCD 的基本使用
  • 详解Qt QDir路径类
  • 跨平台应用开发框架(1)----Qt(组件篇)
  • C#里怎么样实现单向链表?
  • 《图像梯度与常见算子全解析:原理、用法及效果展示》
  • [OpenGL]使用OpenGL+OIT实现透明效果
  • CPU性能优化--性能分析方法
  • 网络层协议IP
  • 【计算机网络】多路转接之select
  • Next.js-样式处理
  • 数据结构 (9)顺序表与链表的综合比较
  • 深入理解二叉搜索树(BST)
  • 【组件】前端ElementUi 下拉Tree树形组件 带模糊搜索自动展开高亮功能
  • Move 合约部署踩坑笔记:如何解决 Sui 客户端发布错误Committing lock file
  • linux系统运维面试题(二)(Linux System Operations Interview Questions II)
  • 国产FPGA+DSP 双FMC 6U VPX处理板
  • 嵌入式硬件实战提升篇(二)PCB高速板设计 FPGA核心板带DDR3 PCB设计DDR全面解析
  • LeetCode Hot100 - 矩阵篇
  • Vue.js 前端路由详解:从基础概念到 Vue Router 实战
  • 植物明星大乱斗——功能拆解