如何创建Babylon.js自定义网? [英] How to create a custom mesh in Babylon.js?

查看:302
本文介绍了如何创建Babylon.js自定义网?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是babylonjs 3D WebGL的库。

I'm using the babylonjs 3D WebGL library.

这是伟大的图书馆,但我不能找到同样的,它存在于THREE.JS库。

It's great library, but I can't find the same, which exists in THREE.JS library.

例如,我在数据库中2D多边形,我从获取它的多边形数据,然后创建一个自定义的网格,挤压它。

For example, I have 2D polygons in database, I'm fetching the polygon data from it and then create a custom mesh and extruding it.

随着THREE.JS,没有任何问题,我可以添加到一些数组:

With the THREE.JS, there isn't any problem, I can add to some array:

...
points.push( new THREE.Vector2( part.x, -part.y ) );
...
var shape = new THREE.Shape( points );
var extrusion = {
    amount: building.height,
    bevelEnabled: false
};
var geometry = new THREE.ExtrudeGeometry( shape, extrusion );
var mesh = new THREE.Mesh( geometry, new THREE.MeshLambertMaterial({
    ambient: 0xbbbbb,
    color: 0xff0000
});
...
scene.add( mesh );

这很简单。如何做同样的,我找不到。

It's very simple. How to do the same, I couldn't find.

我发现只有一些信息:

<一个href="http://blogs.msdn.com/b/eternalcoding/archive/2013/06/27/babylon-js-a-complete-javascript-framework-for-building-3d-games-with-html-5-and-webgl.aspx" rel="nofollow">http://blogs.msdn.com/b/eternalcoding/archive/2013/06/27/babylon-js-a-complete-javascript-framework-for-building-3d-games-with-html-5-and-webgl.aspx

通过这样的一个例子(从MSDN按Ctrl + F - > 您还可以创建点和面的列表一目):

With such an example (from msdn by Ctrl + F -> You can also create a mesh from a list of vertices and faces):

var plane = new BABYLON.Mesh(name, scene);

 var indices = [];
 var positions = [];
 var normals = [];
 var uvs = [];

 // Vertices
 var halfSize = size / 2.0;
 positions.push(-halfSize, -halfSize, 0);
 normals.push(0, 0, -1.0);
 uvs.push(0.0, 0.0);

 positions.push(halfSize, -halfSize, 0);
 normals.push(0, 0, -1.0);
 uvs.push(1.0, 0.0);

 positions.push(halfSize, halfSize, 0);
 normals.push(0, 0, -1.0);
 uvs.push(1.0, 1.0);

 positions.push(-halfSize, halfSize, 0);
 normals.push(0, 0, -1.0);
 uvs.push(0.0, 1.0);

 // Indices
 indices.push(0);
 indices.push(1);
 indices.push(2);

 indices.push(0);
 indices.push(2);
 indices.push(3);

 plane.setVerticesData(positions, BABYLON.VertexBuffer.PositionKind);
 plane.setVerticesData(normals, BABYLON.VertexBuffer.NormalKind);
 plane.setVerticesData(uvs, BABYLON.VertexBuffer.UVKind);
 plane.setIndices(indices);

 return plane;

但就是这是相当不一样的THREE.JS。比如我需要手工计算索引缓冲凡THREE.JS我并不需要它,也它与平面的样品只有我没有找到确切地挤压任何信息。

But's it's rather not the same as with the THREE.JS. For example I need to count index buffer manually where in THREE.JS I don't need it, also it's a sample with plane only and I didn't find any info about extruding exactly.

所以......也许,有一些简单的方法在BabylonJS?

So... Maybe, there are some easy ways in BabylonJS?

推荐答案

有挤出不支持,但现在,这可能是一个很大的特点,以增加:)我一定把它添加到我们的路线图。如果您想进一步讨论这个问题请你在的babylon.js论坛

There is no support for extrusion right now but this could be a great feature to add :) I will definitely add it to our roadmap. If you would like to discuss the issue further please ask on the babylon.js forum.

这篇关于如何创建Babylon.js自定义网?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆