# Easy Text (in 3D) and primitives (Box, Sphere, Plane, Cone, Cylinder) components; also upcoming editor plans for new components

**URL:** https://forum.castle-engine.io/t/easy-text-in-3d-and-primitives-box-sphere-plane-cone-cylinder-components-also-upcoming-editor-plans-for-new-components/345
**Category:** News
**Created:** [May 22, 2021, 8:52pm UTC](https://forum.castle-engine.io/t/easy-text-in-3d-and-primitives-box-sphere-plane-cone-cylinder-components-also-upcoming-editor-plans-for-new-components/345 "2021-05-22T20:52:43Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![michalis](https://forum.castle-engine.io/user_avatar/forum.castle-engine.io/michalis/32/3_2.png) [@michalis](https://forum.castle-engine.io/u/michalis)
#### Post date: [May 22, 2021, 8:52pm UTC](https://forum.castle-engine.io/t/easy-text-in-3d-and-primitives-box-sphere-plane-cone-cylinder-components-also-upcoming-editor-plans-for-new-components/345/1 "2021-05-22T20:52:43Z")

</div>

| [![Castle Game Engine editor - playing with 3D primitives](https://castle-engine.io/wp/wp-content/uploads/2021/05/Zrzut-ekranu-z-2021-05-22-03-17-33-200x113.png)](https://castle-engine.io/wp/wp-content/uploads/2021/05/Zrzut-ekranu-z-2021-05-22-03-17-33.png "Castle Game Engine editor - playing with 3D primitives") |
| [![Castle Game Engine editor - playing with 3D primitives 2](https://castle-engine.io/wp/wp-content/uploads/2021/05/Zrzut-ekranu-z-2021-05-22-03-33-47-200x113.png)](https://castle-engine.io/wp/wp-content/uploads/2021/05/Zrzut-ekranu-z-2021-05-22-03-33-47.png "Castle Game Engine editor - playing with 3D primitives 2") |
| [![Castle Game Engine editor - playing with 3D text](https://castle-engine.io/wp/wp-content/uploads/2021/05/Zrzut-ekranu-z-2021-05-22-04-13-49-200x113.png)](https://castle-engine.io/wp/wp-content/uploads/2021/05/Zrzut-ekranu-z-2021-05-22-04-13-49.png "Castle Game Engine editor - playing with 3D text") |
| [![Castle Game Engine editor - playing with 3D text 2](https://castle-engine.io/wp/wp-content/uploads/2021/05/Zrzut-ekranu-z-2021-05-22-04-41-47-200x113.png)](https://castle-engine.io/wp/wp-content/uploads/2021/05/Zrzut-ekranu-z-2021-05-22-04-41-47.png "Castle Game Engine editor - playing with 3D text 2") |
| [![Castle Game Engine editor - playing with 3D primitives and normalmaps](https://castle-engine.io/wp/wp-content/uploads/2021/05/Zrzut-ekranu-z-2021-05-22-05-13-39-200x113.png)](https://castle-engine.io/wp/wp-content/uploads/2021/05/Zrzut-ekranu-z-2021-05-22-05-13-39.png "Castle Game Engine editor - playing with 3D primitives and normalmaps") |
| [![Castle Game Engine editor - playing with 3D primitives 3](https://castle-engine.io/wp/wp-content/uploads/2021/05/Zrzut-ekranu-z-2021-05-22-05-14-37-200x113.png)](https://castle-engine.io/wp/wp-content/uploads/2021/05/Zrzut-ekranu-z-2021-05-22-05-14-37.png "Castle Game Engine editor - playing with 3D primitives 3") |

## New components in Castle Game Engine that you can place inside the viewport

We have a few new components in CGE, working perfectly with [CGE editor](https://castle-engine.io/manual_editor.php):

- [TCastleBox](https://castle-engine.io/apidoc-unstable/html/CastleScene.TCastleBox.html)
- [TCastleSphere](https://castle-engine.io/apidoc-unstable/html/CastleScene.TCastleSphere.html)
- [TCastlePlane](https://castle-engine.io/apidoc-unstable/html/CastleScene.TCastlePlane.html)
- [TCastleCone](https://castle-engine.io/apidoc-unstable/html/CastleScene.TCastleCone.html)
- [TCastleCylinder](https://castle-engine.io/apidoc-unstable/html/CastleScene.TCastleCylinder.html)
- [TCastleText](https://castle-engine.io/apidoc-unstable/html/CastleScene.TCastleText.html)

You can add them inside editor. They descend from [TCastleTransform](https://castle-engine.io/apidoc-unstable/html/CastleTransform.TCastleTransform.html), so add them somewhere inside your `Viewport.Items` hierarchy, and they are 3D (e.g. `TCastleText` can be freely rotated in 3D, unlike 2D-only [TCastleLabel](https://castle-engine.io/apidoc-unstable/html/CastleControls.TCastleLabel.html)). They expose a lot properties you would expect:

- size,
- material (simple properties to set material type and main color),
- texture (and normalmap),
- toggle visibility of sides/bottom,
- double-sidedness,
- rendering options (wireframe etc.),
- text size,
- text spacing,
- text alignment (horizontal and vertical).
- Notable TODO: the [TCastleText](https://castle-engine.io/apidoc-unstable/html/CastleScene.TCastleText.html) font (and it’s quality, to avoid it being blurry at large sizes) is not yet adjustable. See below about plans.

Using these primitives allows to quickly set up some 3D environments in CGE editor. I think it is extremely useful for quick prototyping of 3D content, creating a scene from a composition of simple primitives or adding simple primitives to something more complicated (e.g. to TCastleScene using glTF). You don’t need to [use Blender](https://castle-engine.io/creating_data_blender.php) to create trivial 3D things 🙂

Previously this all was possible, but not always comfortable, and not in CGE editor. You can of course [create 3D geometry primitives](https://castle-engine.io/x3d_implementation_geometry3d.php) by directly creating X3D nodes, and you get extra flexibility (you can e.g. customize all material/texture parameters — our above primitives expose only a simple API to adjust material/textures). But this approach is not available visually, in the CGE editor. We have various ideas to “converge” these 2 approaches — one is to introduce a visual editor for X3D nodes, but adding this inside a CGE editor to make it really “seamless” is not easy task. Moreover, the experience showed that simpler CGE API, that hides X3D nodes and some of their complications, is often much simpler to use — so we play both sides, making X3D API simpler to use in CGE, while also hiding X3D in many places.

## Upcoming new CGE components (that will work perfectly in CGE editor)

1. _Non-visual components_ that can be still designed in CGE editor.

2. _Behaviors_ (descendants of [TCastleBehavior](https://castle-engine.io/apidoc-unstable/html/CastleTransform.TCastleBehavior.html)) that extend parent TCastleTransform.

3. _Lights_. Using internal scenes with X3D lights underneath, using gizmos to manipulate lights like in [view3dscene](https://castle-engine.io/view3dscene.php) lights editor. 

4. _Camera as TCastleTransform descendant_. If you need it right now, just use my draft implementation of this idea in class `TCastleCameraTransform` inside `examples/creature_behaviors/`. Just copy this class interface+implementation to your code.
