Giter Club home page Giter Club logo

cesium-czml's Introduction

Введение в CZML.

CZML - это основанный на JSON формат для описания изменяемых в течении времени графических сцен. Придуман, главным образом, для использования в браузерах выполняющий библиотеку Cesium.

Структура. Состоит из неких "пакетов" (Packets), каждый их которых определяет объект на сцене. На верхнем уровне описывается массив этих пакетов:

[
    // packet one
    {
        "id": "SomeId1",
        // ...
    },
    // packet two
    {
        "id": "SomeId2",
        // ...
    }
]

Возможно также описывать пакеты, таким образом, чтобы можно было загружать объекты сцены в потоковом режиме, в этом случае пакеты объектов могут описываться постепенно, в разных частях данных. Это реализуется с помощью технологии "Server-sent events" ( https://html.spec.whatwg.org/multipage/server-sent-events.html ).

Интервалы. Значения св-в объектов можно описывать через интервалы. При этом указывается время, в течении которого св-во имеет указанное значение, например:

{
    "id": "myObject",
    "someProperty": [
        {
            "interval": "2012-04-30T12:00:00Z/13:00:00Z",
            "number": 5
        },
        {
            "interval": "2012-04-30T13:00:00Z/14:00:00Z",
            "number": 6
        },
    ]
}

Также возможно описывать последовательное изменение значений (допускается разные алгоритмы последовательного изменения, по-умолчанию это - "линейная интерполяция). Например, для сложных значений (Composite Values) типа координат, описание последовательного изменения будет выглядеть следующим образом:

{
    // ...
    "someInterpolatableProperty": {
        "cartesian": [
            "2012-04-30T12:00Z", 1.0, 2.0, 3.0,
            "2012-04-30T12:01Z", 4.0, 5.0, 6.0,
            "2012-04-30T12:02Z", 7.0, 8.0, 9.0
        ]
    }
}

Здесь на каждом тике будут вычисляться промежуточные значения. Например, в 12:00:30 координаты будут [2.5, 3.5, 4.5]

Без описания изменений во времени, для сложных (композитных) значений, их всё равно необходимо их описывать в отдельном наборе полей:

{
    "id": "myObject",
    "someComplexProperty": {
        "cartesian": [1.0, 2.0, 3.0]
    }
}

Особенности формата, связь с другими форматами

  • Файлы gltf могут быть частями формата и задаётся ключами model, gltf, пример:
"model": {
      "gltf": "models/CesiumMilkTruck/CesiumMilkTruck.glb"
}

Свойства объектов

  • id - уникальный, в пределах сцены, идентификатор
  • model - задаёт модель в формате gltf/glb

cesium-czml's People

Contributors

linkfly avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.