国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【autodesk】瀏覽器中渲染rvt模型

這篇具有很好參考價值的文章主要介紹了【autodesk】瀏覽器中渲染rvt模型。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

使用Forge完成渲染

Forge是什么 為什么能夠渲染出來rvt模型

  • Forge是由Autodesk開發(fā)的一套云端開發(fā)平臺和工具集。
  • 在Forge平臺中,有一個名為"Model Derivative"的服務(wù),它可以將包括RVT(Revit)在內(nèi)的多種BIM(Building Information Modeling)文件格式轉(zhuǎn)換為可在Web上瀏覽和渲染的格式。
  • 具體來說,"Model Derivative"服務(wù)可以將RVT(Revit)文件轉(zhuǎn)換為SVF(Scalable Vector Graphics)格式。
  • SVF是一種基于Web的輕量級3D模型表示格式,可以實現(xiàn)高性能的3D模型渲染和交互。通過將RVT文件轉(zhuǎn)換為SVF格式,可以在Web端使用Forge提供的Viewer組件加載和展示RVT模型

Forge與Autodesk的關(guān)系

  • Autodesk是一家設(shè)計軟件公司,F(xiàn)orge可以視為Autodesk的云端擴(kuò)展

渲染步驟:

首先要注冊autodesk平臺,并創(chuàng)建項目 獲取自己的client_id與client_secret

官網(wǎng)地址:Autodesk Platform Services (formerly Forge)

如下圖:

配置postman環(huán)境?

下面我們演示通過postman上傳模型到Forge云端,然后配置Forge的js渲染出來

post環(huán)境文件:

BIM.postman collection.json

{
	"info": {
		"_postman_id": "aedeb5db-ab5a-4b0e-ba31-d329f6ef66ba",
		"name": "Beijing-Workshop",
		"schema": "https://schema.getpostman.com/json/collection/v2.0.0/collection.json",
		"_exporter_id": "24665034"
	},
	"item": [
		{
			"name": "1獲取access token",
			"event": [
				{
					"listen": "test",
					"script": {
						"exec": [
							"var data = JSON.parse(responseBody);",
							"postman.setEnvironmentVariable(\"access_token\", data.access_token);",
							"postman.setEnvironmentVariable(\"expires_in\", data.expires_in);",
							"postman.setEnvironmentVariable(\"token_type\", data.token_type);"
						],
						"type": "text/javascript"
					}
				}
			],
			"request": {
				"method": "POST",
				"header": [
					{
						"key": "Content-Type",
						"value": "application/x-www-form-urlencoded"
					}
				],
				"body": {
					"mode": "urlencoded",
					"urlencoded": [
						{
							"key": "client_id",
							"value": "{{client_id}}",
							"type": "text"
						},
						{
							"key": "client_secret",
							"value": "{{client_secret}}",
							"type": "text"
						},
						{
							"key": "grant_type",
							"value": "client_credentials",
							"type": "text"
						},
						{
							"key": "scope",
							"value": "data:read data:write bucket:create bucket:read",
							"type": "text"
						},
						{
							"key": "expires_in",
							"value": "360000",
							"type": "text"
						}
					]
				},
				"url": "{{base_domain}}/authentication/v1/authenticate"
			},
			"response": []
		},
		{
			"name": "2創(chuàng)建的存儲桶(bucket)",
			"event": [
				{
					"listen": "prerequest",
					"script": {
						"exec": [
							"if (request.data) {",
							"    var requestData = JSON.parse(request.data);",
							"    postman.setEnvironmentVariable(\"bucketKey\", requestData.bucketKey);",
							"    postman.setEnvironmentVariable(\"bucketPolicy\", requestData.policyKey);",
							"}"
						],
						"type": "text/javascript"
					}
				}
			],
			"request": {
				"method": "POST",
				"header": [
					{
						"key": "Authorization",
						"value": "Bearer {{access_token}}"
					},
					{
						"key": "Content-Type",
						"value": "application/json"
					}
				],
				"body": {
					"mode": "raw",
					"raw": "{\n  \"bucketKey\":\"ac-persistent-bucket-test8\",\n  \"policyKey\":\"persistent\"\n}"
				},
				"url": "{{base_domain}}/oss/v2/buckets"
			},
			"response": []
		},
		{
			"name": "3 查看bucket是否創(chuàng)建成功",
			"request": {
				"method": "GET",
				"header": [
					{
						"key": "Authorization",
						"value": "Bearer {{access_token}}"
					}
				],
				"url": {
					"raw": "{{base_domain}}/oss/v2/buckets?limit=10",
					"host": [
						"{{base_domain}}"
					],
					"path": [
						"oss",
						"v2",
						"buckets"
					],
					"query": [
						{
							"key": "limit",
							"value": "10"
						}
					]
				}
			},
			"response": []
		},
		{
			"name": "4往bucket里放置object模型",
			"event": [
				{
					"listen": "test",
					"script": {
						"exec": [
							"if (responseCode.code === 200) {",
							"    var data = JSON.parse(responseBody);",
							"    postman.setEnvironmentVariable(\"urn\", data.objectId);",
							"    postman.setEnvironmentVariable(\"urnBase64\", window.btoa(data.objectId));",
							"    postman.setEnvironmentVariable(\"file_location\", data.location);",
							"}",
							""
						],
						"type": "text/javascript"
					}
				}
			],
			"request": {
				"method": "PUT",
				"header": [
					{
						"key": "Authorization",
						"value": "Bearer {{access_token}}"
					}
				],
				"body": {
					"mode": "file",
					"file": {
						"src": "/C:/Users/ac135/Desktop/rvtText/data/textOne.rvt"
					}
				},
				"url": "{{base_domain}}/oss/v2/buckets/{{bucketKey}}/objects/aggregate-1.rvt"
			},
			"response": []
		},
		{
			"name": "5檢查對象模型是否成功上傳",
			"request": {
				"method": "GET",
				"header": [
					{
						"key": "Authorization",
						"value": "Bearer {{access_token}}"
					}
				],
				"url": "{{base_domain}}/oss/v2/buckets/{{bucketKey}}/objects"
			},
			"response": []
		},
		{
			"name": "6將模型在云端轉(zhuǎn)換成SVF格式",
			"event": [
				{
					"listen": "test",
					"script": {
						"exec": [
							"var data = JSON.parse(responseBody);",
							"",
							"var setEnvVar = function (tar, src) {",
							"    if (!src) {",
							"        return;",
							"    }",
							"    postman.setEnvironmentVariable(tar, src);",
							"}",
							"",
							"if (data) {",
							"    if (data.urn) {",
							"        setEnvVar(\"urnBase64\", data.urn);",
							"    }",
							"}"
						],
						"type": "text/javascript"
					}
				}
			],
			"request": {
				"method": "POST",
				"header": [
					{
						"key": "Authorization",
						"value": "Bearer {{access_token}}"
					},
					{
						"key": "Content-Type",
						"value": "application/json"
					},
					{
						"key": "x-ads-force",
						"value": "true"
					}
				],
				"body": {
					"mode": "raw",
					"raw": "{\n    \"input\": {\n        \"urn\": \"{{urnBase64}}\" \n    },\n    \"output\": {\n        \"destination\": {\n            \"region\": \"us\"\n        },\n        \"formats\": [\n        {\n            \"type\": \"svf\",\n            \"views\":[\"2d\", \"3d\"]\n        }]\n    }\n}"
				},
				"url": "{{base_domain}}/modelderivative/v2/designdata/job"
			},
			"response": []
		},
		{
			"name": "7檢查模型是否轉(zhuǎn)化完成",
			"request": {
				"method": "GET",
				"header": [
					{
						"key": "Authorization",
						"value": "Bearer {{access_token}}"
					},
					{
						"key": "Accept",
						"value": "application/vnd.api+json,application/json"
					}
				],
				"url": "{{base_domain}}/modelderivative/v2/designdata/{{urnBase64}}/manifest"
			},
			"response": []
		},
		{
			"name": "04-POST job",
			"event": [
				{
					"listen": "test",
					"script": {
						"type": "text/javascript",
						"exec": [
							"var data = JSON.parse(responseBody);",
							"",
							"",
							"if (data) {",
							"    if (data.urn) {",
							"        postman.setEnvironmentVariable(\"urnBase64\", data.urn);",
							"    }",
							"}"
						]
					}
				}
			],
			"request": {
				"method": "POST",
				"header": [
					{
						"key": "Authorization",
						"value": "Bearer {{access_token}}"
					},
					{
						"key": "Content-Type",
						"value": "application/json"
					},
					{
						"key": "x-ads-force",
						"value": "true"
					}
				],
				"body": {
					"mode": "raw",
					"raw": "{\n    \"input\": {\n        \"urn\": \"{{urnBase64}}\" \n    },\n    \"output\": {\n        \"destination\": {\n            \"region\": \"us\"\n        },\n        \"formats\": [\n        {\n            \"type\": \"svf\",\n            \"views\":[\"2d\", \"3d\"]\n        }]\n    }\n}"
				},
				"url": "{{base_domain}}/modelderivative/v2/designdata/job"
			},
			"response": []
		},
		{
			"name": "06-GET metadata",
			"request": {
				"method": "GET",
				"header": [
					{
						"key": "Authorization",
						"value": "Bearer {{access_token}}"
					}
				],
				"url": "{{base_domain}}/modelderivative/v2/designdata/{{urnBase64}}/metadata"
			},
			"response": []
		},
		{
			"name": "07-GET metadata/?:guid",
			"request": {
				"method": "GET",
				"header": [
					{
						"key": "Authorization",
						"value": "Bearer {{access_token}}"
					},
					{
						"key": "Accept-Encoding",
						"value": "gzip"
					}
				],
				"url": "{{base_domain}}/modelderivative/v2/designdata/{{urnBase64}}/metadata/{{metadata_guid}}"
			},
			"response": []
		},
		{
			"name": "08-GET :urn/metadata/:guid/properties",
			"request": {
				"method": "GET",
				"header": [
					{
						"key": "Authorization",
						"value": "Bearer {{access_token}}"
					}
				],
				"url": "{{base_domain}}/modelderivative/v2/designdata/{{urnBase64}}/metadata/{{metadata_guid}}/properties"
			},
			"response": []
		},
		{
			"name": "09-bucket details",
			"event": [
				{
					"listen": "test",
					"script": {
						"type": "text/javascript",
						"exec": [
							"if (responseCode.code === 200 && responseBody) {",
							"    var data = JSON.parse(responseBody);",
							"    postman.setEnvironmentVariable(\"bucketKey\", data.bucketKey);",
							"}"
						]
					}
				}
			],
			"request": {
				"method": "GET",
				"header": [
					{
						"key": "Authorization",
						"value": "Bearer {{access_token}}"
					}
				],
				"url": "{{base_domain}}/oss/v2/buckets/{{bucketKey}}/details"
			},
			"response": []
		},
		{
			"name": "12-GET formats",
			"request": {
				"method": "GET",
				"header": [
					{
						"key": "Authorization",
						"value": "Bearer {{access_token}}"
					}
				],
				"url": "{{base_domain}}/modelderivative/v2/designdata/formats"
			},
			"response": []
		}
	]
}

BIM.postman environment,.json

{
	"id": "63cf71cf-bae6-411f-8e53-7319cf62fd9a",
	"name": "Beijing-Workshop",
	"values": [
		{
			"key": "base_domain",
			"value": "https://developer.api.autodesk.com",
			"type": "text",
			"enabled": true
		},
		{
			"key": "client_id",
			"value": "xxxxxxxxx",
			"type": "text",
			"enabled": true
		},
		{
			"key": "client_secret",
			"value": "xxxxxxxxxxx",
			"type": "text",
			"enabled": true
		},
		{
			"key": "urnBase64",
			"value": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6YWMtcGVyc2lzdGVudC1idWNrZXQtdGVzdDMvYWdncmVnYXRlLTEucnZ0",
			"type": "text",
			"enabled": true
		},
		{
			"key": "access_token",
			"value": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imp3dF9zeW1tZXRyaWNfa2V5In0.eyJjbGllbnRfaWQiOiJNbDhXdWJFdW52WVRaRk1za2xpQ200YnZCM0dkREVibyIsImV4cCI6MTUyNjExNDc3OCwic2NvcGUiOlsiZGF0YTpyZWFkIiwiZGF0YTp3cml0ZSIsImJ1Y2tldDpjcmVhdGUiLCJidWNrZXQ6cmVhZCJdLCJhdWQiOiJodHRwczovL2F1dG9kZXNrLmNvbS9hdWQvand0ZXhwNjAiLCJqdGkiOiIxMEV2aEVpcGhQMGszTm9FNkFOa2NnR1pKOVJUaUhDazA3dXhWMDFFc1R1M2twS2tVNnB4a2d5d3A5QXBFakpDIn0.prPXmCc9e1oxZcPFSEgPOlonHG8po16RdzDciborQlg",
			"type": "text",
			"enabled": true
		},
		{
			"key": "guid",
			"value": "57873878-6d98-b389-aa22-fead1053823f",
			"type": "text",
			"enabled": true
		},
		{
			"key": "bucketKey",
			"value": "xiaodong-persistent-bucket-test8",
			"type": "text",
			"enabled": true
		},
		{
			"key": "guid",
			"value": "e22cc916-cabd-4b97-9ccd-1ab1e613f707",
			"type": "text",
			"enabled": true
		},
		{
			"key": "objectKey",
			"value": "RevitNative.rvt",
			"type": "text",
			"enabled": true
		},
		{
			"key": "expires_in",
			"value": "3599",
			"type": "text",
			"enabled": true
		},
		{
			"key": "token_type",
			"value": "Bearer",
			"type": "text",
			"enabled": true
		},
		{
			"key": "bucketPolicy",
			"value": "persistent",
			"type": "text",
			"enabled": true
		},
		{
			"key": "urn",
			"value": "urn:adsk.objects:os.object:xiaodong-persistent-bucket-test8/workshop-2.rvt",
			"type": "text",
			"enabled": true
		},
		{
			"key": "file_location",
			"value": "https://developer.api.autodesk.com/oss/v2/buckets/xiaodong-persistent-bucket-test8/objects/workshop-2.rvt",
			"type": "text",
			"enabled": true
		}
	],
	"_postman_variable_scope": "environment",
	"_postman_exported_at": "2023-07-15T15:06:21.850Z",
	"_postman_exported_using": "Postman/10.16.0"
}

?client_secret與client_id記住改成自己的,然后就開始用postman請求上傳了

獲取access token

https://developer.api.autodesk.com/authentication/v1/authenticate

是用于獲取 Autodesk API 的訪問令牌(access token)的認(rèn)證

請求中包含必要的認(rèn)證信息

  • 客戶端 ID(client_id)
  • 客戶端密鑰(client_secret)?
  • grant_type:授權(quán)類型,通常為 "client_credentials"(客戶端憑據(jù)模式)
  • scope:請求的權(quán)限范圍,用空格分隔多個權(quán)限(如 "data:read data:write")
  • expires_in:設(shè)置合適的過期時間,單位毫秒

響應(yīng)結(jié)果:
【autodesk】瀏覽器中渲染rvt模型,html5 && css3 && 瀏覽器,開發(fā)語言,前端,js

創(chuàng)建 Autodesk Forge 中的存儲桶(bucket)?

https://developer.api.autodesk.com/oss/v2/buckets

請求中包含必要的認(rèn)證信息:

  • Authorization:Authorization: Bearer {{access_token}}
  • bucketKey:存儲桶的唯一標(biāo)識符,它必須是全局唯一的??梢允褂眯懽帜?、數(shù)字、連字符?-?和下劃線?_?來命名。長度應(yīng)在3到128個字符之間。
  • policyKey:存儲桶的訪問策略。默認(rèn)為?transient,表示存儲桶中的對象在30天后過期;?persistent,表示永久保存

?響應(yīng)結(jié)果:

【autodesk】瀏覽器中渲染rvt模型,html5 && css3 && 瀏覽器,開發(fā)語言,前端,js

?查看bucket是否創(chuàng)建成功

https://developer.api.autodesk.com/oss/v2/buckets

請求中包含必要的認(rèn)證信息:

  • Authorization:Authorization: Bearer {{access_token}}

請求可選的參數(shù)信息:

  • limit:指定要返回的存儲桶數(shù)量的限制。例如,返回最多 10 個存儲桶,默認(rèn)為 10

?響應(yīng)結(jié)果:

【autodesk】瀏覽器中渲染rvt模型,html5 && css3 && 瀏覽器,開發(fā)語言,前端,js

?往bucket里放置object模型

https://developer.api.autodesk.com/oss/v2/buckets/{bucketKey}/objects/{objectName}

?請求中包含必要的認(rèn)證信息:

  • Authorization:Authorization: Bearer {{access_token}}
  • 選擇需要放置的rvt模型
  • objectName:每個文件在存儲桶中都有一個唯一的標(biāo)識符

?響應(yīng)結(jié)果:

【autodesk】瀏覽器中渲染rvt模型,html5 && css3 && 瀏覽器,開發(fā)語言,前端,js

?檢查對象模型是否成功上傳到 Autodesk Forge 存儲桶(bucket)中

https://developer.api.autodesk.com/oss/v2/buckets/{{bucketKey}}/objects

請求中包含必要的認(rèn)證信息:

  • Authorization:Authorization: Bearer {{access_token}}
  • bucketKey:查詢的存儲桶的實際標(biāo)識符

?響應(yīng)結(jié)果:

【autodesk】瀏覽器中渲染rvt模型,html5 && css3 && 瀏覽器,開發(fā)語言,前端,js

將模型在云端轉(zhuǎn)換成SVF格式?

https://developer.api.autodesk.com/modelderivative/v2/designdata/job

請求中包含必要的認(rèn)證信息:

  • Authorization:Authorization: Bearer {{access_token}}
  • input:指定要轉(zhuǎn)換的對象的 URN(Uniform Resource Name)。將 object_id 的 URN 作為輸入。
  • output:指定要生成的輸出格式和文件類型。在這里,你可以指定 SVF 格式作為輸出。例如,{"formats": [{"type": "svf", "views": ["2d", "3d"]}]}

備注:input中的urn是 objectId轉(zhuǎn)化為Base64格式

響應(yīng)結(jié)果:

【autodesk】瀏覽器中渲染rvt模型,html5 && css3 && 瀏覽器,開發(fā)語言,前端,js

檢查模型是否轉(zhuǎn)化完成

https://developer.api.autodesk.com/modelderivative/v2/designdata/{base64_urn}/manifest

請求中包含必要的認(rèn)證信息:

  • Authorization:Authorization: Bearer {{access_token}}
  • base64_urn:經(jīng)過 Base64 編碼的 URN

響應(yīng)結(jié)果:

【autodesk】瀏覽器中渲染rvt模型,html5 && css3 && 瀏覽器,開發(fā)語言,前端,js

【autodesk】瀏覽器中渲染rvt模型,html5 && css3 && 瀏覽器,開發(fā)語言,前端,js?圖一表示進(jìn)度,圖二代表成功

瀏覽器渲染:

html渲染模板? ?將accessToken與documentId替換掉就行

<!DOCTYPE html>
<html>

<head>
    <title>Autodesk Forge: 3D Viewer App Sample</title>

    <meta http-equiv="cache-control" content="max-age=0" />
    <meta http-equiv="cache-control" content="no-cache" />
    <meta http-equiv="expires" content="0" />
    <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
    <meta http-equiv="pragma" content="no-cache" />
    <!-- Third Party package -->
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <!-- Autodesk Forge Viewer files (IMPORTANT) -->
    <link rel="stylesheet" 
        type="text/css">
    <script src="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.51/viewer3D.min.js"></script>

    <style>
        /** Just simple CSS styling to make this page a little nicer **/
        body {
            margin: 0;
            padding: 0;
        }
    </style>
</head>

<body>

    <!-- The Viewer will be instantiated here -->
    <div id="MyViewerDiv"></div>

    <!-- Custom script -->
    <script>
        var viewer;
        var options = {
            env: 'AutodeskProduction',
            api: 'derivativeV2', // TODO: for models uploaded to EMEA change this option to 'derivativeV2_EU'
            // getAccessToken: getForgeToken
            accessToken: 'eyJhbGciOiJSUzI1NiIsImtpZCI6IlU3c0dGRldUTzlBekNhSzBqZURRM2dQZXBURVdWN2VhIiwicGkuYXRtIjoiN3ozaCJ9.eyJzY29wZSI6WyJkYXRhOnJlYWQiLCJkYXRhOndyaXRlIiwiYnVja2V0OmNyZWF0ZSIsImJ1Y2tldDpyZWFkIl0sImNsaWVudF9pZCI6IkpCcldjc3p3RVZCQ0dNMm5sY1J6N0tIZXZTbXpYUXM0IiwiYXVkIjoiaHR0cHM6Ly9hdXRvZGVzay5jb20vYXVkL2Fqd3RleHA2MCIsImp0aSI6ImJjWXBRalcwekh5aTZyUEd3QU1kNjdjamlWS1Q2dDZIYXNqcjFmOXR4OUExeGhZY05JWkhINVlibkdDeHVaTWoiLCJleHAiOjE2ODk5MTI0ODB9.JdpIFQAmWmsGc-t2g3tpU677G1Y11RwF4ndTxbwSa4hE5tOjYtLsMK7pR-jGGWIHAEHUkScvDixQWFIUG_o5UWpwhAdH7r06126QhGFNk_Wf1d8OvoDknqdKt9aXns_1xvxucOdPs3VkJ8BWH6j65B3fxZ7GB5jub3zeF7sGuYd1zBL9FdAcQ5_uQUBpEXh8uP4yZ_Y3yDe_mnTx2OxTMyRXsHw7quWjtxXDQXweGq0xDn3ENayOTkYnsru3_GJmGXUE4b-Zl1csHENJyyegkDqrfbaLbMeKagCWxY-RnCikmg80iWDqOd6KvIejRbQdqpjdQWz4i3Qx6Wnj6Lzf4w'
        };
        // var documentId = 'urn:' + getUrlParameter('urn');
        var documentId = 'urn:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6YWMtcGVyc2lzdGVudC1idWNrZXQtdGVzdDMvYWdncmVnYXRlLTEucnZ0'
        // 初始化和加載文檔的部分
        Autodesk.Viewing.Initializer(options, function onInitialized() {
            // Find the element where the 3d viewer will live.    
            var htmlElement = document.getElementById('MyViewerDiv');
            if (htmlElement) {
                // Create and start the viewer in that element    
                viewer = new Autodesk.Viewing.GuiViewer3D(htmlElement);
                viewer.start();
                // Load the document into the viewer.
                Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
                $('.adsk-viewing-viewer').css('height', '80%')
                $('.adsk-viewing-viewer').css('width', '42%')
            }
        });

        /**
        * 加載模型的回調(diào)函數(shù)
        */
        function onDocumentLoadSuccess(doc) {
            // Load the default viewable geometry into the viewer.
            // Using the doc, we have access to the root BubbleNode,
            // which references the root node of a graph that wraps each object from the Manifest JSON.
            var viewable = doc.getRoot().getDefaultGeometry();
            if (viewable) {
                viewer.loadDocumentNode(doc, viewable).then(function (result) {
                    console.log('Viewable Loaded!');
                }).catch(function (err) {
                    console.log('Viewable failed to load.');
                    console.log(err);
                }
                )
            }
        }

        /**
        * 文檔加載失敗時的回調(diào)函數(shù)
        */
        function onDocumentLoadFailure(viewerErrorCode) {
            console.error('onDocumentLoadFailure() - errorCode: ' + viewerErrorCode);
            jQuery('#MyViewerDiv').html('<p>Translation in progress... Please try refreshing the page.</p>');
        }

    </script>
</body>

</html>

效果圖如下:

其他資源分享:

視頻教程:通過Forge十分鐘實現(xiàn)Web端3D模型瀏覽_嗶哩嗶哩_bilibili

有其他問題可以留言 或者私信?文章來源地址http://www.zghlxwxcb.cn/news/detail-698267.html

到了這里,關(guān)于【autodesk】瀏覽器中渲染rvt模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 如何在瀏覽器中啟用 WebGL 以使用 HTML5 3D 查看器

    WebCenter 中的 HTML5 3D Collada Viewer(自 14.1 以來新增)要求在瀏覽器中啟用 WebGL。較舊的瀏覽器可能不支持此功能,或者要求用戶首先顯式啟用此功能。本頁介紹如何為所有主要瀏覽器啟用此功能。WebGL 3D 查看器 本文是以下超級用戶文章的摘要:如何在瀏覽器中啟用 WebGL? 在嘗

    2024年02月10日
    瀏覽(101)
  • Ubuntu 下 FireFox( 火狐 ) 瀏覽器不支持HTML5播放器解決方法

    Ubuntu 下 FireFox( 火狐 ) 瀏覽器不支持HTML5播放器解決方法

    終端輸入 ? 會出現(xiàn)正在設(shè)定 ttf-mscorefonts-installer 點(diǎn)【Tab】鍵,選中【確定】,然后單擊【Enter】,選【是】,按【Enter】鍵,等待解壓安裝 重啟瀏覽器ok了

    2024年04月14日
    瀏覽(39)
  • 【前端八股文】瀏覽器系列:性能優(yōu)化——HTML、CSS、JS、渲染優(yōu)化

    【前端八股文】瀏覽器系列:性能優(yōu)化——HTML、CSS、JS、渲染優(yōu)化

    本系列目錄:【前端八股文】目錄總結(jié) 是以《代碼隨想錄》八股文為主的筆記。詳情參考在文末。 代碼隨想錄的博客_CSDN博客-leecode題解,ACM題目講解,代碼隨想錄領(lǐng)域博主 性能優(yōu)化,從以下幾個方面來進(jìn)行。 避免HTML中直接寫CSS viewport加速頁面渲染 使用語義化標(biāo)簽 減少標(biāo)簽的

    2023年04月20日
    瀏覽(53)
  • 瀏覽器渲染機(jī)制

    瀏覽器渲染機(jī)制

    學(xué)習(xí)渡一課程、參考 必須明白的瀏覽器渲染機(jī)制 - 掘金 HTML解析 布局 分層 繪制 分塊 光柵化 畫 解析html會生成一個 dom樹和cssom樹 ? document.styleSheets? 可以看到cssom樹 ? ? 渲染阻塞 在渲染的過程中,遇到一個script標(biāo)記時,就會停止渲染,去請求腳本文件并執(zhí)行腳本文件,因為

    2024年02月11日
    瀏覽(48)
  • 瀏覽器渲染原理

    瀏覽器渲染原理

    當(dāng)你在地址欄輸入內(nèi)容回車后,瀏覽器進(jìn)程中的UI線程會捕捉輸入內(nèi)容,如果訪問的是網(wǎng)址,會啟動一個網(wǎng)絡(luò)線程來進(jìn)行DNS解析;后面連接服務(wù)器獲取數(shù)據(jù);如果輸入的不是網(wǎng)址而是,就會使用默認(rèn)配置的搜索引擎來進(jìn)行查詢 網(wǎng)絡(luò)進(jìn)程獲取到數(shù)據(jù)后會使用safeBrowsing檢查

    2024年02月07日
    瀏覽(67)
  • 瀏覽器渲染流程

    瀏覽器渲染流程

    解析HTML,生成DOM樹,解析CSS,生成CSSOM樹 將DOM樹和CSSOM樹結(jié)合,生成渲染樹(Render Tree) Layout(回流):根據(jù)生成的渲染樹,進(jìn)行回流(Layout),得到節(jié)點(diǎn)的幾何信息(位置,大?。?Painting(重繪):根據(jù)渲染樹以及回流得到的幾何信息,得到節(jié)點(diǎn)的絕對像素 Display:將像素發(fā)送給GPU,展示在

    2024年02月09日
    瀏覽(19)
  • 【前端】瀏覽器的渲染流程(完整)

    【前端】瀏覽器的渲染流程(完整)

    本文主要包含以下內(nèi)容: 瀏覽器渲染整體流程 解析 HTML 樣式計算 布局 分層 生成繪制指令 分塊 光柵化 繪制 常見面試題 瀏覽器,作為用戶瀏覽網(wǎng)頁最基本的一個入口,我們似乎認(rèn)為在地址欄輸入 URL 后網(wǎng)頁自動就出來了。殊不知在用戶輸入網(wǎng)頁地址,敲下回車的那一刻,瀏

    2024年02月04日
    瀏覽(31)
  • 前端面試:【瀏覽器與渲染引擎】工作原理與渲染流程

    嗨,親愛的讀者!你是否曾經(jīng)好奇過當(dāng)你在瀏覽器中輸入URL并按下回車時,網(wǎng)頁是如何顯示在你的屏幕上的?這背后涉及了復(fù)雜的瀏覽器工作原理和渲染流程。本文將帶你深入了解瀏覽器如何工作以及網(wǎng)頁如何被渲染出來。 1. 瀏覽器的工作原理: 當(dāng)你輸入URL并按下回車時,

    2024年02月11日
    瀏覽(100)
  • 前端性能優(yōu)化之瀏覽器渲染優(yōu)化

    在當(dāng)今互聯(lián)網(wǎng)高速發(fā)展的時代,用戶對于網(wǎng)頁加載速度和性能的要求越來越高。作為前端開發(fā)者,我們需要關(guān)注并致力于提升網(wǎng)頁的加載和渲染性能,以提供更好的用戶體驗。而瀏覽器渲染優(yōu)化正是我們實現(xiàn)這個目標(biāo)的關(guān)鍵。在本文中,我們將探討一些關(guān)于瀏覽器渲染優(yōu)化的

    2024年02月11日
    瀏覽(25)
  • 前端秘法進(jìn)階篇----這還是我們熟悉的瀏覽器嗎?(瀏覽器的渲染原理)

    前端秘法進(jìn)階篇----這還是我們熟悉的瀏覽器嗎?(瀏覽器的渲染原理)

    目錄 一.瀏覽器渲染原理 二.渲染時間點(diǎn) 三.渲染流水線 1.解析html(Parse HTML) 1.1解析成DOM樹(document object model) 1.2解析成CSSOM樹(css?object model) 2.樣式計算(Recalculate Style) 3.布局(Layout) 4.分層(Layer) 5. 繪制(Paint) 6.分塊(Tiling) 7. 光柵化(Raster) 8. 畫(Draw) 四.附加面試題 1.什么是 reflow? 2.什

    2024年02月21日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包