您的位置:首页 > 健康 > 美食 > 专业团队什么梗_硬之城电子元器件商城_网站创建流程_网络推广是以企业产品或服务

专业团队什么梗_硬之城电子元器件商城_网站创建流程_网络推广是以企业产品或服务

2025/5/13 12:15:42 来源:https://blog.csdn.net/u012739527/article/details/147477289  浏览:    关键词:专业团队什么梗_硬之城电子元器件商城_网站创建流程_网络推广是以企业产品或服务
专业团队什么梗_硬之城电子元器件商城_网站创建流程_网络推广是以企业产品或服务

在这里插入图片描述

在 OSG(Open Scene Graph)中,纹理贴图是为模型添加细节的关键技术,主要涉及纹理加载UV 映射多重纹理叠加三部分。

基础理论

纹理加载

纹理的作用,就是将2D图像映射到3D模型表面,增强视觉细节。

纹理类型与格式支持:

OSG 支持多种图像格式,包括常见的 .jpg/.jpeg、.png、.tga、.bmp 等,推荐使用 .png(支持透明通道)或 .dds(压缩格式,性能更优)。

代码示例

第一步:创建并加载纹理
// 创建2D纹理对象
ref_ptr<Texture2D> texture = new Texture2D;// 从文件加载图像数据(自动识别格式)
ref_ptr<Image> image = osgDB::readImageFile("texture.png");
if (!image) {OSG_WARN << "Failed to load texture image!" << std::endl;return nullptr;
}// 绑定图像到纹理
texture->setImage(image);
第二步:将纹理关联到几何体
// 创建Geode节点并绑定纹理
ref_ptr<Geode> geode = new Geode;
geode->getOrCreateStateSet()->setTextureAttributeAndModes(0, texture.get());// 添加几何体(如四边形)
ref_ptr<Geometry> geometry = new Geometry;
geode->addDrawable(geometry);

UV 映射原理

UV 坐标:范围为 [0, 1],用于指定纹理像素在模型表面的对应位置(U 为横向,V 为纵向)。

作用:控制纹理如何 “包裹” 模型,避免拉伸、扭曲或错位。

手动设置 UV 坐标

// 假设几何体为四边形,顶点坐标为(-1,-1,0), (1,-1,0), (1,1,0), (-1,1,0)
ref_ptr<Vec3Array> vertices = new Vec3Array;
vertices->push_back(Vec3(-1, -1, 0));
vertices->push_back(Vec3(1, -1, 0));
vertices->push_back(Vec3(1, 1, 0));
vertices->push_back(Vec3(-1, 1, 0));
geometry->setVertexArray(vertices);// 设置UV坐标(与顶点一一对应)
ref_ptr<Vec2Array> texCoords = new Vec2Array;
texCoords->push_back(Vec2(0, 0));   // 左下角对应纹理原点
texCoords->push_back(Vec2(1, 0));   // 右下角
texCoords->push_back(Vec2

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com