GeometryAttribute是Cesium中表示几何体属性信息的类。其中包括顶点坐标,颜色,法向量等信息。
new GeometryAttribute(options)
构造一个几何体属性对象。其中options
参数是一个包含以下属性的对象:
属性 | 类型 | 描述 |
---|---|---|
componentDatatype |
ComponentDatatype |
几何体属性数据类型枚举 |
componentsPerAttribute |
Number |
每个属性的分量数量。比如:一个属性有r、g、b三个分量,则该值为3。 |
normalize |
Boolean |
数据是否需要归一化。 |
values |
Array |
属性数据数组。 |
componentDatatype : ComponentDatatype
表示几何体属性数据类型的枚举类型。可选值有:
ComponentDatatype.BYTE
ComponentDatatype.SHORT
ComponentDatatype.UNSIGNED_BYTE
ComponentDatatype.UNSIGNED_SHORT
ComponentDatatype.FLOAT
componentsPerAttribute : Number
表示每个属性的分量数量。比如:一个属性有r、g、b三个分量,则该值为3。
normalize : Boolean
表示数据是否需要归一化。
values : Array
表示属性数据数组。
以下示例将创建一个位置属性和一个颜色属性,并将它们添加到一个几何体对象中:
var GeometryAttribute = Cesium.GeometryAttribute;
var Cartesian3 = Cesium.Cartesian3;
var positions = [
new Cartesian3(0.0, 0.0, 0.0),
new Cartesian3(750000.0, 0.0, 0.0),
new Cartesian3(0.0, 750000.0, 0.0),
];
var colors = [
1.0, 0.0, 0.0, 1.0, // 红色
0.0, 1.0, 0.0, 1.0, // 绿色
0.0, 0.0, 1.0, 1.0, // 蓝色
];
var positionAttribute = new GeometryAttribute({
componentDatatype: ComponentDatatype.FLOAT,
componentsPerAttribute: 3,
values: new Float32Array([
positions[0].x, positions[0].y, positions[0].z,
positions[1].x, positions[1].y, positions[1].z,
positions[2].x, positions[2].y, positions[2].z,
]),
});
var colorAttribute = new GeometryAttribute({
componentDatatype: ComponentDatatype.FLOAT,
componentsPerAttribute: 4,
values: new Float32Array(colors),
});
var geometry = new Geometry({
attributes: {
position: positionAttribute,
color: colorAttribute,
},
primitiveType: PrimitiveType.TRIANGLES,
});
viewer.scene.primitives.add(new Primitive({
geometryInstances: new GeometryInstance({
geometry: geometry,
}),
}));
在此示例中,我们首先创建了三个三维空间点的位置数据和它们对应的颜色数据。这些数据随后用于创建位置属性和颜色属性。
最后,我们将这些属性添加到几何体对象中,并将其添加到场景的原始对象中以进行渲染。