# how to create custom geometry ,sucess in versio b29,but failed in latest version

**URL:** <https://community.cesium.com/t/how-to-create-custom-geometry-sucess-in-versio-b29-but-failed-in-latest-version/5450>\
**Category:** CesiumJS\
**Created:** [April 27, 2017, 9:04am UTC](https://community.cesium.com/t/how-to-create-custom-geometry-sucess-in-versio-b29-but-failed-in-latest-version/5450 "2017-04-27T09:04:33Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![11149](https://avatars.discourse-cdn.com/v4/letter/1/da6949/32.png) [@11149](https://community.cesium.com/u/11149)\
**Post date:** [April 27, 2017, 9:04am UTC](https://community.cesium.com/t/how-to-create-custom-geometry-sucess-in-versio-b29-but-failed-in-latest-version/5450/1 "2017-04-27T09:04:33Z")

</div>

the code run success in version b29 is below:

&nbsp;&nbsp;var TetrahedronGeometry = function(){  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var negativeRootTwoOverThree = -Math.sqrt(2.0) / 3.0;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var negativeOneThird = -1.0 / 3.0;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var rootSixOverThree = Math.sqrt(6.0) / 3.0;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//四面体的四个顶点  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var positions = new Float64Array(4 \* 3);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// position 0  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;positions[0] = 0.0;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;positions[1] = 0.0;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;positions[2] = 1.0;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// position 1  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;positions[3] = 0.0;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;positions[4] = (2.0 \* Math.sqrt(2.0)) / 3.0;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;positions[5] = negativeOneThird;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// position 2  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;positions[6] = -rootSixOverThree;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;positions[7] = negativeRootTwoOverThree;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;positions[8] = negativeOneThird;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// position 3  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;positions[9] = rootSixOverThree;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;positions[10] = negativeRootTwoOverThree;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;positions[11] = negativeOneThird;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var attributes = new Cesium.GeometryAttributes({  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;position : new Cesium.GeometryAttribute({  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;componentDatatype : Cesium.ComponentDatatype.DOUBLE,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;componentsPerAttribute : 3,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;values : positions  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//顶点索引  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var indices = new Uint16Array(4 \* 3);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// back triangle  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indices[0] = 0;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indices[1] = 1;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indices[2] = 2;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// left triangle  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indices[3] = 0;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indices[4] = 2;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indices[5] = 3;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// right triangle  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indices[6] = 0;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indices[7] = 3;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indices[8] = 1;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// bottom triangle  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indices[9] = 2;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indices[10] = 1;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indices[11] = 3;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//包围球  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var boundingSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(0.0,0.0,0.0),1.0);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var geometry = Cesium.GeometryPipeline.computeNormal(new Cesium.Geometry({  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attributes: attributes,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indices: indices,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;primitiveType: Cesium.PrimitiveType.TRIANGLES,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boundingSphere: boundingSphere  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}));

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.attributes = geometry.attributes;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.indices = geometry.indices;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.primitiveType = geometry.primitiveType;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.boundingSphere = geometry.boundingSphere;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[//this.boundingSphere](https://this.boundingSphere) = Cesium.BoundingSphere.fromVertices(positions);  
&nbsp;&nbsp;&nbsp;&nbsp;};

&nbsp;&nbsp;&nbsp;&nbsp;var cesiumWidget = new Cesium.CesiumWidget('cesiumContainer');  
&nbsp;&nbsp;&nbsp;&nbsp;var scene = cesiumWidget.scene;  
&nbsp;&nbsp;&nbsp;&nbsp;var ellipsoid = cesiumWidget.scene.globe.ellipsoid;  
&nbsp;&nbsp;&nbsp;&nbsp;  
&nbsp;&nbsp;&nbsp;&nbsp;//模型矩阵  
&nbsp;&nbsp;&nbsp;&nbsp;var modelMatrix = Cesium.Matrix4.multiplyByUniformScale(  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cesium.Matrix4.multiplyByTranslation(  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cesium.Transforms.eastNorthUpToFixedFrame(ellipsoid.cartographicToCartesian(  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cesium.Cartographic.fromDegrees(-100.0, 40.0))),  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new Cesium.Cartesian3(0.0, 0.0, 200000.0)),  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;500000.0);  
&nbsp;&nbsp;&nbsp;&nbsp;  
&nbsp;&nbsp;&nbsp;&nbsp;//四面体的实例  
var instance = new Cesium.GeometryInstance({  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;geometry : Cesium.GeometryPipeline.toWireframe(new TetrahedronGeometry()),  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modelMatrix : modelMatrix,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attributes : {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color : Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.WHITE)  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}  
&nbsp;&nbsp;&nbsp;&nbsp;});  
&nbsp;&nbsp;&nbsp;&nbsp;  
&nbsp;&nbsp;&nbsp;&nbsp;//加入场景  
&nbsp;&nbsp;&nbsp;&nbsp;scene.primitives.add(new Cesium.Primitive({  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;geometryInstances : instance,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appearance : new Cesium.PerInstanceColorAppearance({  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flat : true,  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;translucent : false  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})  
&nbsp;&nbsp;&nbsp;&nbsp;}));

I want add polygon with self defined indices,to disply all partition in right height. can any one tell me how to add self defined geometry in the latest version or add polygon with self defined indices.thanks!

---

<div class="post-metadata">

**Author:** ![Rachel\_Hwang](https://avatars.discourse-cdn.com/v4/letter/r/d78d45/32.png) [@Rachel\_Hwang](https://community.cesium.com/u/Rachel_Hwang)\
**Post date:** [May 1, 2017, 7:50pm UTC](https://community.cesium.com/t/how-to-create-custom-geometry-sucess-in-versio-b29-but-failed-in-latest-version/5450/2 "2017-05-01T19:50:07Z")

</div>

Hi there,

Looks like the issue was in your calls of Cesium.Matrix4.multiplyByUniformScale and Cesium.Matrix4.multiplyByTranslation, which both require a result parameter. I’ve pasted a working example here: [http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Hello%20World.html&label=Showcases](http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Hello%20World.html&label=Showcases)

Hope that helps!

- Rachel

---

<div class="post-metadata">

**Author:** ![11149](https://avatars.discourse-cdn.com/v4/letter/1/da6949/32.png) [@11149](https://community.cesium.com/u/11149)\
**Post date:** [May 5, 2017, 7:36am UTC](https://community.cesium.com/t/how-to-create-custom-geometry-sucess-in-versio-b29-but-failed-in-latest-version/5450/3 "2017-05-05T07:36:25Z")

</div>

after the matric,there is a new problem \_workerName must be defined for asynchronous geometry ![😣](https://mail.google.com/mail/e/1f623)

---

<div class="post-metadata">

**Author:** ![Rachel\_Hwang](https://avatars.discourse-cdn.com/v4/letter/r/d78d45/32.png) [@Rachel\_Hwang](https://community.cesium.com/u/Rachel_Hwang)\
**Post date:** [May 9, 2017, 3:04am UTC](https://community.cesium.com/t/how-to-create-custom-geometry-sucess-in-versio-b29-but-failed-in-latest-version/5450/4 "2017-05-09T03:04:45Z")

</div>

Hi there,

Luckily this is an easy fix: Disable asynchronous primitive create by passing [options.asynchronous: false] to the Primitive constructor. This means that when you add a new primitive, Cesium will not render until it is ready.

Hope that helps!

- Rachel

---

<div class="post-metadata">

**Author:** ![Abhi\_Sundu](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/abhi_sundu/32/2079_2.png) [@Abhi\_Sundu](https://community.cesium.com/u/Abhi_Sundu)\
**Post date:** [September 11, 2017, 2:32pm UTC](https://community.cesium.com/t/how-to-create-custom-geometry-sucess-in-versio-b29-but-failed-in-latest-version/5450/5 "2017-09-11T14:32:52Z")

</div>

Hi,  
I'm having the same initial issue as 文文武 with , but I can't seem to access the example you posted (the javascript code section is just the cesium.viewer line). Do you think you could repost it? I'm getting a developer error when I put a new matrix4 object as the "result" parameter for both of those functions.  
Thanks  
- Abhi

---

<div class="post-metadata">

**Author:** ![Abhi\_Sundu](https://sea2.discourse-cdn.com/cesium/user_avatar/community.cesium.com/abhi_sundu/32/2079_2.png) [@Abhi\_Sundu](https://community.cesium.com/u/Abhi_Sundu)\
**Post date:** [September 11, 2017, 3:36pm UTC](https://community.cesium.com/t/how-to-create-custom-geometry-sucess-in-versio-b29-but-failed-in-latest-version/5450/6 "2017-09-11T15:36:25Z")

</div>

Wait actually it seems to work now. I think I was putting "new cesium.matrix4" in the wrong place. ignore my previous question.

---

<div class="post-metadata">

**Author:** ![thanghps](https://avatars.discourse-cdn.com/v4/letter/t/c2a13f/32.png) [@thanghps](https://community.cesium.com/u/thanghps)\
**Post date:** [February 28, 2020, 4:26am UTC](https://community.cesium.com/t/how-to-create-custom-geometry-sucess-in-versio-b29-but-failed-in-latest-version/5450/7 "2020-02-28T04:26:29Z")

</div>

Dear everyone!,

I also have this issue, do not display this gemetry.

Could you please help me post your solution?

Thank you very much!

Vào 16:04:33 UTC+7 Thứ Năm, ngày 27 tháng 4 năm 2017, [wenwu2...@gmail.com](mailto:wenwu2...@gmail.com) đã viết:
