gpt4 book ai didi

javascript - 如何在 Babylon.js 中为形状着色?

转载 作者:行者123 更新时间:2023-11-30 09:32:54 24 4
gpt4 key购买 nike

在 babylonjs-playground.com 上处理“基本场景”示例 here ,我正在尝试对球体的颜色进行简单的修改。

这是我的尝试,可以交互式运行:

https://www.babylonjs-playground.com/#95BNBS

代码如下:

var createScene = function () {

// The original example, without comments:
var scene = new BABYLON.Scene(engine);
var camera = new BABYLON.FreeCamera("camera1", new BABYLON.Vector3(0, 5, -10), scene);
camera.setTarget(BABYLON.Vector3.Zero());
camera.attachControl(canvas, true);
var light = new BABYLON.HemisphericLight("light1", new BABYLON.Vector3(0, 1, 0), scene);
light.intensity = 0.7;
var sphere = BABYLON.Mesh.CreateSphere("sphere1", 16, 2, scene);
sphere.position.y = 1;
var ground = BABYLON.Mesh.CreateGround("ground1", 6, 6, 2, scene);

// My attempt to color the sphere
var material = new BABYLON.StandardMaterial(scene);
material.alpha = 1;
material.diffuseColor = new BABYLON.Color3(1,0,0);
scene.material = material;

return scene;

};

我尝试将有色 Material 添加到球体中,但没有任何效果。

我还尝试在球体对象上寻找与颜色相关的属性:

Object.keys(sphere).filter((key) => return key.includes("Color") )
// => "outlineColor", "overlayColor", "_useVertexColors", "edgesColor"

除了_useVertexColors,所有这些看起来都是颜色对象,但是改变它们没有效果:

sphere.overlayColor.g = 1;
sphere.outlineColor.g = 1;
sphere.edgesColor.g = 1;

最佳答案

你很接近。您正在使用 diffuseColor 正确设置颜色,但实际上并没有将它专门添加到您的球体中。

您的球体对象存储在 sphere 中,因此您需要做的是设置您在 sphere 上创建的 material 而不是在场景上。

// My attempt to color the sphere
var material = new BABYLON.StandardMaterial(scene);
material.alpha = 1;
material.diffuseColor = new BABYLON.Color3(1.0, 0.2, 0.7);
sphere.material = material; // <--

查看此 tutorial

关于javascript - 如何在 Babylon.js 中为形状着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45258084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com