当前位置: 首页 > 后端技术 > Java

我只用了3个步骤就实现了逼真的3D场景渲染

时间:2023-04-02 10:25:46 Java

,将3D模型和环境场景渲染的既有质感又有逼真的材质效果。我需要经过多少个步骤?显然,目前的3D模型材质渲染技术还无法量化简单几步就能完成的标准化工作。要完成一个高质量的3D模型渲染,一般需要:1.准备丰富的贴图和材质库:渲染想要的材质效果需要根据具体模型场景的形状细节和复杂程度,以及对应的材质外观需要有针对性地收集纹理材料。耗时与模型的复杂程度成正比,市面上大部分素材都是付费使用的,成本低。高的。2、从头开始调整参数:现有的3D建模工具必须通过丰富的参数实现建模和渲染操作,通过调整参数来设置和控制模型。3、渲染效果取决于美术经验:3D建模师逐渐成为吃紧的行业人才,这也说明3D模型制作需要技术娴熟、经验丰富的从业者。随着模型和场景的多样化和制作的精细化,美术体验直接关系到成品的质量高低。传统的操作方式真的很细致很慢,但是抵消繁琐步骤的素材生成能力出现了!今天为大家带来的材质生成能力简单易用,只需3步即可渲染出高品质的材质效果!以目前较为常见的3D游戏所需要的复杂场景为例,要对由多个物体组成的复杂场景进行材质渲染,只需进行以下简单操作:1.使用RGB相机对所需材质进行拍照。2.自动从RGB照片生成material素材。3.材质贴图,完整渲染。华为3D建模服务提供的材质生成能力,简化并加速了繁琐的材质生成和渲染过程。基于AI辅助材质生成,提升3D模型外观制作效率,将技术美术经验和制作规范固化为材质预设。实例,复用有价值的经验和规范,提高内容生产效率,降低素材生产成本。材质生成功能提供了将RGB图像转换为PBR材质的能力。通过集成SDK,用户只需拍摄一张或多张RGB图片,即可一键生成4种材质贴图,包括漫反射贴图/法线贴图/高光贴图/粗糙度贴图。AI辅助PBR素材生成,照片生成素材,解放人力运营成本,满足消费级3D素材应用。输入图像文件规格软硬件要求:普通RGB手机,无RGB-D\LiDAR,所有Android机型支持类型:混凝土,大理石,岩石,碎石,砖块,石膏,粘土,金属,木材,树皮,皮革,织物、油漆面、塑料、合成材料、碎石、泥土(草地、沙滩等)输入图像要求:输入图像分辨率达到1~4K,输入图像输出无接缝、无亮点、阴影、反光纹理分辨率:1k(10241024px)2k(20482048px)SDK包大小:88KB准确率:渲染后SSIM>0.9应用场景3D建模材质生成能力一键实现将现实中各种纹理的木头转为PBR材质,具有高还原度大大提高了场景的构建效率。使用方便,效果好,广泛应用于3D内容制作领域。电商行业:使用3D模型展示产品,为用户提供接近真实的网购体验。会展业:高价值展品、文物以3D模型形式展示,方便用户仔细查看展品细节。游戏行业:如室内场景中地板、桌子、墙壁等所需的木材,打造身临其境的游戏体验。开发准备1、集成HMSCoreSDK1.1,添加当前应用的AppGalleryConnect配置文件。如果您在AppGalleryConnect中开通了相关服务,您需要在您的App中添加“agconnect-services.json”文件。第一步:登录AppGalleryConnect网站,点击“我的项目”。第二步:在项目列表中找到你的项目,点击项目中需要集成HMSCoreSDK的应用。第三步:在“项目设置>通用”页面的“应用”区域,点击“agconnect-services.json”下载配置文件。第四步:复制“agconnect-services.json”文件到应用级根目录。1.2.配置HMSCoreSDK的Maven仓库地址第一步:打开AndroidStudio项目级“build.gradle”文件。第二步:添加HUAWEIagcp插件和Maven代码库。在“buildscript>repositories”配置HMSCoreSDK的Maven仓库地址。在“allprojects>repositories”配置HMSCoreSDK的Maven仓库地址。如果App中添加了“agconnect-services.json”文件,需要在“buildscript>dependencies”中添加agcp插件配置。buildscript{repositories{google()jcenter()//配置HMSCoreSDK的Maven仓库地址。maven{url'https://developer.huawei.com/repo/'}}dependencies{...//添加agcp插件配置。classpath'com.huawei.agconnect:agcp:1.4.2.300'}}allprojects{repositories{google()jcenter()//配置HMSCoreSDK的Maven仓库地址。maven{url'https://developer.huawei.com/repo/'}}}注意:Maven仓库的地址不能在浏览器中直接访问,只能在IDE中配置。如果需要添加多个Maven代码库,请在最后配置华为Maven仓库地址。1.3.添加编译依赖第一步:打开应用级“build.gradle”文件。第二步:在“dependencies”中添加如下编译依赖。材质生成依赖{implementation'com.huawei.hms:modeling3d-material-generate:{version}'}3D对象建模依赖{implementation'com.huawei.hms:modeling3d-object-reconstruct:{version}'}注:{version}替换为实际的Kit依赖版本。版本号索引请参考2版本更新说明。例如:实现'com.huawei.hms:modeling3d-material-generate:1.0.0.300'和实现'com.huawei.hms:modeling3d-object-reconstruct:1.0.0.300'。第三步:添加agcp插件配置。请根据实际情况选择:方法一:在文件头声明的下一行添加如下配置。applyplugin:'com.huawei.agconnect'方法二:在plugins中添加如下配置。plugins{id'com.android.application'//添加如下配置id'com.huawei.agconnect'}2.多语言设置如果您的应用不需要设置,只支持部分语言,请忽略此步骤。App将默认支持HMSCoreSDK支持的所有语言。如果您的应用程序需要设置为仅支持某些特定语言,您可以通过此步骤进行配置。A。打开应用程序级“build.gradle”文件。b.在“android>defaultConfig”中添加“resConfigs”,配置需要支持的语言。配置格式如下:android{defaultConfig{...resConfigs"en","zh-rCN","其他需要支持的语言"}}为HMSCore支持的语言列表SDK,参见HMSCoreSDK支持的语言。3、同步项目完成以上配置后,点击工具栏中的gradle同步图标,即可完成“build.gradle”文件的同步,并将相关依赖下载到本地。注意:如果报错,请检查网络连接是否正常,“build.gradle”文件是否正确。4.配置混淆脚本在编译APK之前,需要配置混淆配置文件,避免混淆HMSCoreSDK导致功能异常。第一步:打开应用级根目录下的混淆配置文件“proguard-rules.pro”,添加排除HMSCoreSDK的混淆配置脚本。-ignorewarnings-keeattributes*Annotation*-keeattributesExceptions-keeattributesInnerClasses-keeattributesSignature-keeattributesSourceFile,LineNumberTable-保留类com.huawei.hianalytics.**{*;}-保留类com.huawei.updatesdk.**{*;}-keepclasscom.huawei.hms.**{*;}第二步:如果使用AndResGuard,需要在应用级的“build.gradle”文件中添加AndResGuard权限列表。"R.string.hms*","R.string.connect_server_fail_prompt_toast","R.string.getting_message_fail_prompt_toast","R.string.no_available_network_prompt_toast","R.string.third_app_*","R.string.upsdk_*","R.layout.hms*","R.layout.upsdk_*","R.drawable.upsdk*","R.color.upsdk*","R.dimen.upsdk*","R.style.upsdk*","R.string.agc*"5.添加权限调用素材生成能力时,开发者需要在AndroidManifest.xml文件中申请如下权限:!--网络权限数据上传下载使用纹理贴图-->调用3D对象建模能力时,开发者需要在AndroidManifest.xml文件:开发步骤在开始API开发工作之前,完成开发准备工作,确保HMSCoreSDK的Maven仓库地址已经在项目中已经配置好,并完成此服务的SDK集成,使用云端服务,需要使用“agconnect-services.json”中的api_key值,并在应用时通过api_key或AccessToken设置应用认证信息被初始化。AccessToken的优先级高于high。(推荐)通过setAccessToken方法设置AccessToken,在应用启动时初始化一次,而不是多次设置。MaterialGenApplication.getInstance().setAccessToken("你的AccessToken");从“ageonnect-services.json”中的api_key获取AccessToken,参见基于OAuth2.0的OpenAuthenticationClientMode。通过setApiKey方法设置api_key,应用启动时初始化一次,无需多次设置。MaterialGenApplication.getInstance().setApiKey("你的api_key");在AppGalleryConnect上注册应用程序时,将为您的应用程序分配一个api_key。创建新的材质生成引擎和材质生成配置器,并初始化材质生成引擎。//创建一个新的材质生成引擎并传入当前上下文。Modeling3dTextureEngine引擎=Modeling3dTextureEngine.getInstance(context);//创建一个新的材质生成配置器。Modeling3dTextureSettingsetting=newModeling3dTextureSetting.Factory()//设置工作模式为AI模式。.setTextureMode(Modeling3dTextureConstants.AlgorithmMode.AI).create();新建一个监听回调,用于处理素材生成上传结果。Modeling3dTextureUploadListeneruploadListener=newModeling3dTextureUploadListener(){publicvoidonResult(StringtaskId,Modeling3dTextureUploadResultresult,Objectext){//获取素材生成上传图片结果。if(result.isComplete()){//上传结果处理。}}@OverridepublicvoidonError(StringtaskId,interrorCode,Stringmessage){//上传错误回调函数。}@OverridepublicvoidonUploadProgress(StringtaskId,doubleprogress,Objectext){//保留接口。}};将采集的图片上传到云端。//获取材质生成任务ID,传递给配置器。Modeling3dTextureInitResultmodeling3dTextureInitResult=engine.initTask(setting);StringtaskId=modeling3dTextureInitResult.getTaskId();if(taskId==null||taskId.equals("")){Log.e("","gettaskIderror"+modeling3dTextureInitResult.getRetMsg());}else{//设置上传监听器。engine.setTextureUploadListener(uploadListener);//异步上传,传入任务id和图片文件所在文件夹路径。engine.asyncUploadFile(taskId,filePath);}查询云端素材生成进度。//创建一个新的材质生成任务处理实例,传入当前上下文。Modeling3dTextureTaskUtilstaskUtils=Modeling3dTextureTaskUtils.getInstance(context);//查询材质生成进度。Modeling3dTextureQueryResultqueryResult=taskUtils.queryTask(taskId);新建一个监听回调,用于处理素材生成下载结果。Modeling3dTextureDownloadListenerdownloadListener=newModeling3dTextureDownloadListener(){publicvoidonResult(StringtaskId,Modeling3dTextureDownloadResultresult,Objectext){//获取材质生成和下载纹理结果的通知。if(result.isComplete()){//下载结果处理。}}@OverridepublicvoidonError(StringtaskId,interrorCode,Stringmessage){//下载错误回调函数。}@OverridepublicvoidonDownloadProgress(StringtaskId,doubleprogress,Objectext){//保留接口。}};下载材质生成贴图。//设置下载监听器。engine.setTextureDownloadListener(downloadListener);//下载纹理texture,传入taskid和保存路径。engine.asyncDownloadTexture(taskId,savePath);调用材质生成同步接口,实时获取生成的贴图。//同步接口,传入图片文件路径,保存纹理路径,configurator.intresult=engine.syncGenerateTexture(文件路径,下载路径,设置);删除素材生成任务。intret=taskUtils.deleteTask(taskId);了解更多>>访问华为3D建模服务官网获取华为3D建模开发指导文档华为HMSCore官方论坛华为3D建模开源仓库地址:GitHub、Gitee解决集成问题请关注我们StackOverflow了解最新HMSCore的技术资料~