gpt4 book ai didi

javascript - 三个js dat-gui : Change opacity and visibility of object coming from OBJMTL Loader

转载 作者:行者123 更新时间:2023-11-27 23:36:20 25 4
gpt4 key购买 nike

我有一个使用 OBJMTLLoader 加载的对象。我想从 dat-gui 控制面板更改加载对象的位置、可见性和不透明度。我试图实现这个example现在可以移动加载的对象。但是,要更改可见性和不透明度。我想我需要使用加载对象的“ Material ”。我试过这个answer但没能成功。以下是到目前为止我的代码。

objects = [];
var loader = new THREE.OBJMTLLoader();
loader.addEventListener('load', function(event){
object = event.content;
object.traverse(function(child){
if (child instanceof THREE.mesh) {
//The child is needed for the raycaster intersection later
};
});
});
loader.load("models/Model1.obj", "models/Model1.mtl", function (object) {
objects.push(object);
scene.add(object);
parameters = {
x:0, y:2, z:0,
opacity: 1,
visible: true,
reset: function() { resetObject() }
};
var folder1 = gui.addFolder('Position');
var objectX = folder1.add(parameters, 'x').min(-200).max(200).step(1).listen();
//.............
folder1.open();
// moving model is OK. Deleted to save space...

var objectOpacity = gui.add(parameters, 'opacity').min(0).max(1).step(0.01).name('Opacity').listen();
objectOpacity.onChange(function(value){
object.material.opacity = value; });

var objectVisible = gui.addColor( parameters, 'visible').name('Visible?').listen();
objectVisible.onChange(function(value){
object.material.visible = value; });

gui.add( parameters, 'reset' ).name("Reset Object Parameters");
gui.open();
// and the required functions as in the example.

使用上面的代码,控制台会出现以下错误:

Uncaught Failed to interpret color arguments //dat.gui.min.js:87
Uncaught TypeError: Cannot set property 'opacity' of undefined

如何从 dat-gui 面板调整可见性和不透明度?谢谢。

最佳答案

material.visible 定义该 Material 是否可见;如果对象可见,则不会。如果您想让对象可见/不可见,您需要使用 Object3D.visible 属性,因此在上面的代码中您需要执行以下操作:

object.visible = value;

现在是 Material 。加载程序返回一个 THREE.Object3D 而不是 THREE.Mesh。所以你无法通过这种方式获取 Material 。你需要做的是:

object.traverse( function (child) {
if (child instanceof THREE.Mesh) {
child.material.opacity = value;
child.material.transparent = true;
}
});

关于javascript - 三个js dat-gui : Change opacity and visibility of object coming from OBJMTL Loader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34108589/

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