使用Autodesk Viewer时,贴花看起来不像预期的那样显示。上面的图像的贴花正确显示(不在Autodesk查看器中呈现),并且下面的图像没有贴花(在Autodesk查看器中呈现)。贴图在Autodesk查看器中不显示
为什么会这样,以及如何在Autodesk Viewer中使用贴花?
源文件here。
使用Autodesk Viewer时,贴花看起来不像预期的那样显示。上面的图像的贴花正确显示(不在Autodesk查看器中呈现),并且下面的图像没有贴花(在Autodesk查看器中呈现)。贴图在Autodesk查看器中不显示
为什么会这样,以及如何在Autodesk Viewer中使用贴花?
源文件here。
这里是我的代码示例。我在Forge上导入了STEP文件,并将RefdFile_1.png文件复制到了我的node.js服务器上。
var attenuationVertexShader =`
varying vec2 vUv;
varying vec3 vPosition;
void main() {
vUv = uv;
vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);
gl_Position = projectionMatrix * mvPosition;
}
` ;
var attenuationFragmentShader = `
varying vec2 vUv;
uniform sampler2D checkerboard;
void main() {
gl_FragColor = texture2D(checkerboard, vec2 (vUv.x * 0.1263, vUv.y * 0.166)) ;
}
` ;
var dbId =4 ;
var fragId =0 ;
var texturePath ="/RefdFile_1.png" ;
var material =null ;
oViewer =new Autodesk.Viewing.Private.GuiViewer3D ($("#viewer") [0], {}) ; // With toolbar
Autodesk.Viewing.Initializer (options, function() {
oViewer.initialize() ;
oViewer.addEventListener (Autodesk.Viewing.GEOMETRY_LOADED_EVENT, function (event) {
oViewer.fitToView (true) ;
setTimeout (function() { oViewer.autocam.setHomeViewFrom (oViewer.navigation.getCamera()) ; }, 1000) ;
setTimeout (createTexture, 500) ;
}) ;
oViewer.setGroundReflection (false) ;
oViewer.setGroundShadow (false) ;
oViewer.load (myurn) ;
}) ;
function createTexture() {
var loader =new THREE.TextureLoader() ;
loader.load (texturePath, function (texture) {
texture.minFilter =THREE.LinearMipMapLinearFilter ; // THREE.LinearMipMapLinearFilter
texture.magFilter =THREE.LinearFilter ;
var uniforms ={
checkerboard: {
type: 't',
value: texture
}
} ;
material =new THREE.ShaderMaterial ({
uniforms: uniforms,
vertexShader: attenuationVertexShader,
fragmentShader: attenuationFragmentShader,
side: THREE.DoubleSide
}) ;
oViewer.impl.matman().removeMaterial ('shaderMaterial') ;
oViewer.impl.matman().addMaterial ('shaderMaterial', material, true) ;
var floor_mesh_render =oViewer.impl.getRenderProxy (oViewer.model, fragId) ;
oViewer.model.getFragmentList().setMaterial (fragId, material) ;
oViewer.impl.invalidate (true) ;
}) ;
}
您使用哪种文件格式
谢谢cyrille。你可以用完整的工作代码示例链接到你的存储库,而不仅仅是一个片段? – sabrehagen
此外,您是如何提取'RefdFile_1.png'的? – sabrehagen
喜Cyrille,你可以请链接包含您的工作代码示例的存储库? – sabrehagen
?目前大多数格式的Forge默认都不会导入纹理,这可能是那里的问题。但是对于像Fusion360这样的少数文件格式。有一个解决方法,你可以重新应用纹理到fragId,就像这个[示例]所示(https://github.com/Autodesk-Forge/forge-rcdb.nodejs/blob/master/src/client/viewer.components /Viewer.Extensions/Viewing.Extension.Fader/Viewing.Extension.Fader.Core.js)。 – cyrille
你在链接的例子中解释的代码是什么?我正在使用位于此处的步骤文件https://grabcad.com/library/audio-clock-generator-pcb-1 – sabrehagen
任何更新@cyrille? – sabrehagen