已知有一个mesh对象,如何将一个复杂纹理的图像的一部分粘贴到mesh的各个顶点上,mesh顶点和图像的坐标如何一一对应
请参考如下代码:
PolyfaceHeaderPtr ccccurPolyface = PolyfaceHeader::CreateFixedBlockIndexed(3); DPoint3d ptArr[4] = { {0,0,0},{10000,0,0},{10000,10000,0},{0,10000,0} }; ccccurPolyface->Point().insert(ccccurPolyface->Point().begin(), ptArr, ptArr + 4); int indexFaceMesh[3] = { 1,2,3 }; ccccurPolyface->PointIndex().insert(ccccurPolyface->PointIndex().begin(), indexFaceMesh, indexFaceMesh + 3); indexFaceMesh[0] = 3; indexFaceMesh[1] = 4; indexFaceMesh[2] = 1; ccccurPolyface->PointIndex().insert(ccccurPolyface->PointIndex().begin(), indexFaceMesh, indexFaceMesh + 3); DPoint2d ptParamArr[4] = { {0.3,0.3},{0.7,0.6},{0.8,0.9},{0,0} }; ccccurPolyface->Param().insert(ccccurPolyface->Param().begin(), ptParamArr, ptParamArr + 4); indexFaceMesh[0] = 1; indexFaceMesh[1] = 2; indexFaceMesh[2] = 3; ccccurPolyface->ParamIndex().insert(ccccurPolyface->ParamIndex().begin(), indexFaceMesh, indexFaceMesh + 3); indexFaceMesh[0] = 1; indexFaceMesh[1] = 2; indexFaceMesh[2] = 3; ccccurPolyface->ParamIndex().insert(ccccurPolyface->ParamIndex().begin(), indexFaceMesh, indexFaceMesh + 3); EditElementHandle cccurEeh; DraftingElementSchema::ToElement(cccurEeh, *ccccurPolyface, NULL, *ACTIVEMODEL); cccurEeh.AddToModel();
MS学习资源:
MicroStation Wednesday视频分享
深入探讨MicroStation DGN基本概念系列
一步步学习MicroStation CE Addin开发
一步步学习MicroStation CE MDL开发
参考SDK中的MaterialsExample代码生成的纹理图片与给定的图片在Bentley中显示的差异很大,而且在编辑纹理中也找不到有关颜色的设置
原图:
Bentley中显示的
什么设置会影响如此大的颜色差异
可能是光照强度太大造成的,您在提问题是最好是提供一下问题相关的dgn文件,这样我们可以复现问题的话就能更快速的确定问题原因,不然只能靠猜测是哪里出了问题,徒增解决问题的时间。
0743.dgn
目前是测试代码,光源强度确实有影响,但是仍然感觉有色差,达不到橙色的显示效果
这是测试图片
这个存在色差是正常的,视图里边渲染时,受太多设置影响了,例如上边说的光照,还有您材质里边的其他很多设置的印象,材质编辑对话框里边包含的设置粗略估计一些有上百个设置了。这一块牵涉的知识也比较专业,主要是摄影方面的专业知识。还有环境设置等等,想要调出来想要的设置需要先具备摄影相关方面的知识,这个一般都是专业建筑设计师或者摄影师才会细致研究的。
MaterialMapP transMap = expectedSettings.GetMapsR().AddMap(MaterialMap::MAPTYPE_Transparency); transMap->SetLinkType(MaterialMap::MAPTYPE_Transparency); transMap->SetIsEnabled(true); MaterialMapLayerP transLayer = &transMap->GetLayersR().GetTopLayerR(); transLayer->SetOpacity(100.0); transLayer->SetFileName(L"abcd.jpg");
如何通过代码来修改这里的Opacity值呢,使用上面的代码发现文件名称改过了,但是Opacity这个值仍然是53(不知道是否为默认值),如何将其改成100,这个地方也影响bentley中材质的渲染
试试newMaterial->GetSettingsR().SetTransmitIntensity(1),
新的问题最好是新建贴子讨论,这样方便后来人员遇到同样问题时快速找到答案,感谢您的理解。