コード例 #1
0
ファイル: HeadData.cpp プロジェクト: cozza13/hifi
void HeadData::fromJson(const QJsonObject& json) {
    if (json.contains(JSON_AVATAR_HEAD_BLENDSHAPE_COEFFICIENTS)) {
        auto jsonValue = json[JSON_AVATAR_HEAD_BLENDSHAPE_COEFFICIENTS];
        if (jsonValue.isArray()) {
            QVector<float> blendshapeCoefficients;
            QJsonArray blendshapeCoefficientsJson = jsonValue.toArray();
            for (const auto& blendshapeCoefficient : blendshapeCoefficientsJson) {
                blendshapeCoefficients.push_back((float)blendshapeCoefficient.toDouble());
            }
            setBlendshapeCoefficients(blendshapeCoefficients);
        } else if (jsonValue.isObject()) {
            QJsonObject blendshapeCoefficientsJson = jsonValue.toObject();
            for (const QString& name : blendshapeCoefficientsJson.keys()) {
                float value = (float)blendshapeCoefficientsJson[name].toDouble();
                setBlendshape(name, value);
            }
        } else {
            qWarning() << "Unable to deserialize head json: " << jsonValue;
        }
    }

    if (json.contains(JSON_AVATAR_HEAD_LOOKAT)) {
        auto relativeLookAt = vec3FromJsonValue(json[JSON_AVATAR_HEAD_LOOKAT]);
        if (glm::length2(relativeLookAt) > 0.01f) {
            setLookAtPosition((_owningAvatar->getOrientation() * relativeLookAt) + _owningAvatar->getPosition());
        }
    }

    if (json.contains(JSON_AVATAR_HEAD_ROTATION)) {
        setHeadOrientation(quatFromJsonValue(json[JSON_AVATAR_HEAD_ROTATION]));
    }
}
コード例 #2
0
ファイル: Transform.cpp プロジェクト: theomission/hifi
Transform Transform::fromJson(const QJsonValue& json) {
    if (!json.isObject()) {
        return Transform();
    }
    QJsonObject obj = json.toObject();
    Transform result;
    if (obj.contains(JSON_ROTATION)) {
        result.setRotation(quatFromJsonValue(obj[JSON_ROTATION]));
    }
    if (obj.contains(JSON_TRANSLATION)) {
        result.setTranslation(vec3FromJsonValue(obj[JSON_TRANSLATION]));
    }
    if (obj.contains(JSON_SCALE)) {
        result.setScale(vec3FromJsonValue(obj[JSON_TRANSLATION]));
    }
    return result;
}