0

我正在学习Amazon Sumerian以进行 Web VR 开发。我正在尝试从update()方法中该实体的脚本更改颜色属性。代码如下所示:

function update(args, ctx) {
    ctx.entity.transformComponent.setTranslation(0.6, 166, distance);
    distance += 10;
    if (distance > 1500) {
        distance = -10;
        ctx.entityData.color = "blue";
    }
}

我也尝试过设置color属性,ctx.entity.color但这ctx.entity.setAttribute('color', 'blue')也不起作用。我在他们的官方网站上也找不到任何用于设置颜色的文档。我认为我缺少一个简单的问题。

从脚本更新实体颜色的正确方法是什么?

4

2 回答 2

1

以下方法未记录。这可能只是 Sumerian 文档不完整的症状,也可能表明该方法没有得到官方支持,因此将来可能会发生变化。但是现在,您可以使用以下方法来完成您想要的。

function update(args, ctx) {

    ctx.entity.transformComponent.setTranslation(0.6, 166, distance);
    distance += 10;

    if (distance > 1500) {

        distance = -10;

        // Color is a 4 component array in the order: red, green, blue, alpha
        const blueColor = [0, 0, 1, 1];
        ctx.entity.setDiffuse(blueColor);
    }
}
于 2019-01-27T02:17:58.653 回答
1

以下答案适用于 Sumerian API 的预览版/新版本。Sumerian API 的旧版本的答案可以在上面 Kris Schultz 的答案中找到。

只是想为这个问题提供一个答案。

在这种情况下,我正在尝试更改主机实体的衬衫颜色。例如,我想使用脚本将 Cristine Polo 实体的衬衫颜色动态更改为红色。

答案可以从 Amazon Sumerian 脚本 API 的官方文档中获得,我向大家推荐: https ://content.sumerian.amazonaws.com/engine/latest/doc/#content://sumerian-common/Guide /快速%20开始

import * as s from 'module://sumerian-common/api';

export default function RotatorAction(ctx) {
  ctx.start( EnabledAction );
}

function EnabledAction(ctx) {
  ctx.start(
    [ s.material.SetMaterialColorAction, { color: s.color.Red } ]
  );
}

我最终使用了 Legacy API。 此外,使用 Legacy API,我注意到可以只使用三个 RGB 值 [r, g, b] 而不使用 alpha 值。此外,setDiffuse() 采用的 RGB 值介于 0-1 之间,这需要从通常发现的 0-255 比例转换。

于 2021-08-08T16:11:43.700 回答